Einfaches frame mit einigen Rechtecken (Anfängerfrage)

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hi zusammen,

ich habe bisher nicht all zuviel Erfahrung mit der grafischen Java Programmierung.
Mein selbstgestecktes Ziel ist es erstmal, ein Fenster zu erzeuzgen, und innhalb dieses Fenster einige Rechtecke zu platzieren.

Anbei mein bishereiger Code, leider verstehe ich die Zusammenhänge mit den Graphic Klassen nicht so ganz.

Level.java:
Code:
import java.awt.*;
import javax.swing.*;

public class Level extends JPanel {

	// Draw window
	public void draw_window() {
		// Size of Game-Window
		int hight = 600;
		int width = 600;
		
		// Position of window
		int windowpos_x = 400;
		int windowpos_y = 100;
			
		// Draw frame 
		JFrame f = new JFrame("Jump-n-Run test v1" );
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(hight, width);
		f.setLocation(windowpos_x, windowpos_y);
		f.setBackground(Color.BLACK);
		f.setForeground(Color.WHITE);
		f.setResizable(false); 		
	    f.setVisible(true);
	}

	public void draw_window(int hight, int width)
	{
		// Draw frame (Swing)
		JFrame f = new JFrame("Jump-n-Run test v1" );
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(hight, width);
		f.setBackground(Color.BLACK);
		f.setForeground(Color.WHITE);
		f.setResizable(false); 	
	    f.setVisible(true);
	}
	
	/*
	public void paint(Graphics g)
	{
	  // DrawRectangle
	  g.fill3DRect(10, 10, 10, 10, true);
	  g.setColor(Color.WHITE);
	} 
	*/
}

main.java:
Code:
public class main {
	
	public static void main(String[] args) {
		
		// draw
		Level myWorld = new Level();
		myWorld.draw_window();
	}
}

Was mir jetzt nicht klar ist, wie zeichne ich ein Rechteck in das neu erstellte Frame? Ich bin auf die paint() Methode gestossen, allerdings ist mir da der Zusammenhang zum Frame nicht klar. Woher weiss man in welches Frame (falls man z.B. zwei hat, man etwas hineinzeichnet. Davon abgesehen, klappt das bei mir nichtmal mit einem :-/

Kann mir einer einen Hinweis in die richtige Richtung geben?

Danke!

Grüße
Chyper
 
B

Bune

Gast
Erstmal solltest du dein Panel im JFrame erzeugen, nicht andersrum, da das Panel ein bestandteil des Frames sein wird. Dann musst du das Panel zum Frame hinzufügen mit frame.add(panel). Schau dir doch dazu das tutorial auf der java seite an (www.java.sun.com) zu Swing/AWT, das ist ganz gut und klärt auch deine Fragen.

Bune
 

Leroy42

Top Contributor
3 Hinweise:

1. Code gemeinsam nutzen:

Du hast fast identischen Code in drawWindow() und drawWindow(int, int)
Guter Stil (redundanzvermeidend) ist es, die eine durch die andere zu definieren.

Code:
public void drawWindow() {drawWindow(600, 600);}
public void drawWindow(int width, int height) {
  ...
}

Ich verzichte hierbei immer mit Absicht auf eine Leerzeile um
sichtbar zu machen, daß die beiden Methoden eng verzahnt sind.

2. Du kreirst ein JFrame das aber nichts von deinem Level-JPanel weiß; du mußt es adden

f.add(this);

3. Rechtecke zeichnen:
Du überschreibst JPanels paintComponent-Methode

Code:
public void paintComponent (Graphics g) {
  super.paintComponent(g); // zeichnet z.B. den Hintergrund
  int w = getWidth(); 
  int h = getHeight();
  int max = w > h ? w : h;
  for (int d = max; d > 0; d -= 3;) 
    g.drawRect(d, d, w-d, h-d); // Sollte einen rechteckigen Tunnel ergeben.
}


Edit: Uuups, kleiner Fehler!
Es müßte
Code:
for (int d = max/2; d > 0; d -= 3;)

(habe aber keine Zeit zum Testen)
 

dieta

Top Contributor
Wenn du das so machen willst, musst du noch
Code:
f.setLayout(new BorderLayout());
f.add("Center", this);

Die Methode "paint(Graphics G)" ist die Zeichenmethode deines Panels. Du konstruierst hier ein JPanel, das in der Zeichenmethode ein Rechteck zeichnet. In diesem Panel konstruierst du ein JFrame, das dieses Rechteck anzeigen soll. Also musst du nun noch das Panel auf das JFrame bringen.
Es wäre (meiner Meinung nach) übersichtlicher, wenn du eine Klasse für das Fenster hast, die von JFrame erbt und dann noch eine Klasse für das Panel, und dass dann die Fenster-Klasse das Panel ertsellt un hinzufügt:

Code:
import java.awt.*;
import javax.swing.*;

public class Levelfenster extends JFrame
{
   
   public Levelfenster()
   {
      draw_window()
   }
   
   // Draw window
   public void draw_window()
   {
      // Size of Game-Window
      int hight = 600;
      int width = 600;
      
      // Position of window
      int windowpos_x = 400;
      int windowpos_y = 100;
         
      // Draw frame
     setTitle("Jump-n-Run test v1" );
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setSize(hight, width);
     setLocation(windowpos_x, windowpos_y);
     setBackground(Color.BLACK);
     setForeground(Color.WHITE);
     setResizable(false);       
     setLayout(new BorderLayout());
     add("Center", new Level());
     setVisible(true);
   }
   
   // Draw window
   public void draw_window(int height, int width)
   {
      // Draw frame
     setTitle("Jump-n-Run test v1" );
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     setSize(height, width);
     setBackground(Color.BLACK);
     setForeground(Color.WHITE);
     setResizable(false);       
     setLayout(new BorderLayout());
     add("Center", new Level());
     setVisible(true);
   }
   
}

class Level extends JPanel
{
   
   public Level()
   {
   }
   
   public void paintComponent(Graphics g)
   {
     // DrawRectangle
     g.fill3DRect(10, 10, 10, 10, true);
     g.setColor(Color.WHITE);
   }
   
}

[edit]mist, zweiter. (Das 3. mal in 131 Beiträgen)[/edit]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OZAN86 einfaches Fenster öffnen scheitert AWT, Swing, JavaFX & SWT 18
P Swing Empfehlungen für einfaches Computerspiel AWT, Swing, JavaFX & SWT 4
J JavaFX JavaFX Canvas einfaches Zeichenprogramm AWT, Swing, JavaFX & SWT 7
J GUI Anfänger einfaches Program AWT, Swing, JavaFX & SWT AWT, Swing, JavaFX & SWT 3
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
P Einfaches GUI läuft nicht AWT, Swing, JavaFX & SWT 6
E Einfaches Quadrat zeichnen AWT, Swing, JavaFX & SWT 6
T 2D-Grafik Tutorial für ein einfaches Zeichenprogramm! AWT, Swing, JavaFX & SWT 2
2 Einfaches XY Diagramm selbst zeichnen? AWT, Swing, JavaFX & SWT 6
S LayoutManager Einfaches Programm mit VE und Eclipse3.6 realisieren AWT, Swing, JavaFX & SWT 2
N SWT Einfaches Problem beim Layout AWT, Swing, JavaFX & SWT 8
F Einfaches Fenster "ordentlich" darstellen AWT, Swing, JavaFX & SWT 8
T einfaches Menü in swing das nicht herunterklappt? AWT, Swing, JavaFX & SWT 4
M Einfaches GUI basteln? AWT, Swing, JavaFX & SWT 5
B Einfaches JScrollPane mit Bildern füllen AWT, Swing, JavaFX & SWT 2
P GridBagLayout einfaches Beispiel geht nicht? AWT, Swing, JavaFX & SWT 5
M treetable einfaches beispiel gesucht AWT, Swing, JavaFX & SWT 6
M Datenbericht aus Datenbank darstellen.(einfaches Konzept) AWT, Swing, JavaFX & SWT 2
M "einfaches Grafikobjekt erzeugen" AWT, Swing, JavaFX & SWT 8
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
Kotelettklopfer Frame ändert Farbe nicht AWT, Swing, JavaFX & SWT 12
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
T Frame öffnet nicht AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M Internal Frame in den vordergrund AWT, Swing, JavaFX & SWT 4
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
P Frame friert ein AWT, Swing, JavaFX & SWT 6
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
B Frame always on top nur auf anderem Frame AWT, Swing, JavaFX & SWT 9
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
C LookAndFeel Frame updated nicht vollständig AWT, Swing, JavaFX & SWT 9
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
Z Swing JTextfield auf Frame AWT, Swing, JavaFX & SWT 13
N Swing Frame mit GlassPane und Popup AWT, Swing, JavaFX & SWT 5
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
P Frame "always on top" und welche GUI? AWT, Swing, JavaFX & SWT 5
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
M erstes Frame wartet auf die Auswertung eines zweiten AWT, Swing, JavaFX & SWT 8
J Frame-Steuerelement AWT, Swing, JavaFX & SWT 2
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19

Ähnliche Java Themen

Neue Themen


Oben