Frame mit 2 Paneln von Grund auf

Status
Nicht offen für weitere Antworten.

Pasche

Bekanntes Mitglied
Ich habe ein ganz bescheidenes Problem. Normalerweise ist es nicht meine Art, um fertigen Quellcode zu bitten, aber in diesem Fall wäre ich jemandem wirklich SEHR dankbar.

Ich brauche einfach nur ein Frame (AWT) mit 2 Paneln. Auf dem linken sollen später diverse Button platziert werden, das rechte soll als zeichenfäche dienen.

Kann mir jemand für diese Ausgangssituation vielleicht den Quellcode posten. Am besten das ganze in 3 Klassen. Eine "Hauptklasse" und dann jeweils eine für die beiden Panels. Das Frame soll eine Größe von 800 x 600 haben. Gibt es dann auch eine Möglichkeit zu sagen, wie breit die beiden Panels genau sein sollen ?


Ich weiß, sind ne Menge Fragen. Aber ich würde gerne auf einer vernünftigen Grundlage aufbauen. Wenn man sich alles irgendwo zusammensucht ist das nicht so das Wahre :cry:
 

foobar

Top Contributor
Hi
Fang doch erstmal an selber etwas zu programmieren, wenn du dann Probleme hast kannst du die gerne hier posten. Falls du Probleme hast dieses Programm zu schreiben, solltest du erstmal ein gutes Javabuch lesen, damit du die Grundlagen drauf hast. Ansonsten wirst du mit dieser Einstellung nicht weit kommen.
Sorry
 
B

Beni

Gast
Normalerweise ist es nicht meine Art, um fertigen Quellcode zu bitten
Hab mal deine Posts gelesen, stimmt sogar. Aber das wird keine Gewohnheit :wink:

Ich schreib Dir einfach mal den Grundaufbau auf, wie ich jeweils meine Programme organisiere::

Code:
public class Main{
	public static void main(String[] args) {
		MainFrame frame = new MainFrame();
		frame.setVisible( true );
	}	
}
Code:
public class MainFrame extends Frame{
	private ButtonPanel buttonPanel;
	private PaintPanel paintPanel;
	
	public MainFrame(){
		buttonPanel = new ButtonPanel( this );
		paintPanel = new PaintPanel( this );
		
		// Man könnte hier auch eines der anderen Layouts wählen...
		setLayout( new GridLayout( 2, 1 ));
		
		add( buttonPanel );
		add( paintPanel );
		
		// Grösse und Position
		setSize( 800, 600 );
		setLocationRelativeTo( null );
		
		// Reaktion, falls das Frame geschlossen wird
		Listener listener = new Listener();
		addWindowListener( listener );
	}
	
	public ButtonPanel getButtonPanel(){
		return buttonPanel;
	}
	
	public PaintPanel getPaintPanel(){
		return paintPanel;
	}
	
	private class Listener extends WindowAdapter{
		public void windowClosing(WindowEvent e) {
			// Irgendwie reagieren, z.B. Benutzer fragen, ob gespeichert werden soll
		}
	}
}
Code:
public class ButtonPanel extends Panel{
	private MainFrame owner;
	
	public ButtonPanel( MainFrame owner ){
		this.owner = owner;
		
		// Buttons hinzufügen...
	}
	
	public void doSomething(){
		// wird z.B. von einem Button aufgerufen.
		PaintPanel paint = owner.getPaintPanel();
		paint.setSomething( true );
	}
}
Code:
public class PaintPanel extends Panel{
	private MainFrame owner;
	
	public PaintPanel( MainFrame owner ){
		this.owner = owner;
		
		// Buttons hinzufügen...
	}
	
	public void setSomething( boolean value ){
		// ...
	}
}
 

Pasche

Bekanntes Mitglied
Eins vorweg: DANKE !!!!!! :D

eine frage hätte ich da aber doch noch. wie ich jetzt gesehen habe, ist der obere teil das erste panel und der untere das zweite. kann ich die beiden auch nebeneinander anordnen und sagen wie breit die panels sein sollen ?
 
B

Beni

Gast
Du könntest gar kein Layout verwenden:
Code:
public MainFrame(){
  setLayout( null );
  buttonPanel.setBounds( 0, 0, 50, 300 );
  paintPanel.setBounds( 100, 0, 60, 500 );
}


Oder, und was viel besser ist, du verwendest einen anderen LayoutManager:
Code:
public MainFrame(){
	setLayout( new GridBagLayout() );

	paintPanel.setPreferredSize( new Dimension( 400, 400 ));  // etwa so gross wird das PaintPanel gewünscht.
	
	add( buttonPanel, new GridBagConstraints( 0, 0, 1, 1, 1.0, 1.0, 
		GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(1, 1, 1, 1), 0, 0 ));

	add( paintPanel, new GridBagConstraints( 1, 0, 1, 1, 1.0, 1.0, 
		GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(1, 1, 1, 1), 0, 0 ));

}
 

Pasche

Bekanntes Mitglied
Ich habe mich für die erste Version entschieden, weil ich mit der festen Auflösung von 800x600 arbeite.
Nur macht mir gerade die "public class ButtonPanel" etwas sorgen. Wenn ich eine Paint Funktion anlege, kann ich darin die Button setzen, z.B. so:

Code:
public class ButtonPanel extends Panel{
   private MainFrame owner;
   
   public ButtonPanel( MainFrame owner ){
      this.owner = owner;
      // Buttons hinzufügen...
    }
   
   public void doSomething(){
      // wird z.B. von einem Button aufgerufen.
      PaintPanel paint = owner.getPaintPanel();
      paint.setSomething( true );
   }
   
   public void paint(Graphics g){
      setBackground(new Color(236,233,216));
         
      //Rechteck-Button
	  Button button = new Button("Rechteck");
	  button.setBounds( 20, 60, 70, 25 );
	  add(button);
   }
}

Wieso funktioniert das denn nicht in der "public ButtonPanel" ? Ich kann zwar alles fehlerfrei kompilieren, aber es ist dann kein Button zu sehen ???:L

HAT SICH GERADE VON SELBST GEKLÄRT !!! :###
 

Pasche

Bekanntes Mitglied
die probleme hören ja anscheinend doch nicht auf. ich hatte bis jetzt eine Klasse "Line" die wie folgt aussieht:

Code:
class Line
{
	private int x, y, w, h;
	private Color color;
	
	public Line( Color color, int x, int y, int w, int h )
	{
		this.color = color;
		this.x = x;
		this.y = y;
		this.w = w;
		this.h = h;
	}
	
	public void paint( Graphics g )
	{
	  	g.setColor( color );
	    g.drawLine( x, y, w, h );
	}

In der PaintPanel wollte ich dann folgendes machen:

Code:
public class PaintPanel extends Panel{
   private MainFrame owner;
   	
   public PaintPanel( MainFrame owner ){
      this.owner = owner;
      // Buttons hinzufügen...
   }


public void Line(Color colour, int x, int y, int width, int height){
    	owner.add( new Line( colour, x, y, width, height ) );
    	repaint();
   }
}

Nur leider funktioniert das owner vor dem add nicht so richtig (in der public void Line). Was muss ich anstelle von owner benutzen ?
 
B

Beni

Gast
Line ist keine Component, und die Klasse "MainFrame" hat wohl weder eine Methode "add( Obect o )" noch eine Methode "add( Line l )". Und daher musst du diese Methoden wohl selbst noch schreiben :wink:
 

Pasche

Bekanntes Mitglied
Jetzt sind wir wieder bei meinen unglaublichen Java-Fähigkeiten :)

Die Klasse MainFrame dürfte hierbei doch nicht entscheidend sein, oder ? Weil ja das Ganze ja in der "PaintPanel" steht und auch nur auf dieses Panel angewendet werden muss. Müsste dann nicht nur in der "PaintPanel" die add(Object o) zu finden sein ?

Bleibt nur die Frage wie das Ganze dann aussieht. ich kann mir darunter nicht wirklich viel vorstellen ???:L
 
B

Beni

Gast
Müsste dann nicht nur in der "PaintPanel" die add(Object o) zu finden sein
Da hast du recht, wenn man MainFrame raushält ist es wirklich besser.

Du musst die Methode selbst schreiben, und du musst das Object irgendwo speichern. Zum Speichern gibt es vorbereitete Klassen, z.B. java.util.Vector. Das einzige was deine add-Methode noch machen muss, ist die entsprechende Methode bei einem Vector aufrufen...
 

Illuvatar

Top Contributor
<offtopic>
Beni hat gesagt.:
Oder, und was viel besser ist, du verwendest einen anderen LayoutManager:
Code:
public MainFrame(){
	setLayout( new GridBagLayout() );
Für so was verwendest du echt nen GridBagLayout? Das hätte ich selbst von dir nicht gedacht :wink: </offtopic>
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Alex_99 Aktion ausführen wenn Frame disposed wurde Java Basics - Anfänger-Themen 5
frager2345 Fensterklasse, Wie auf Frame im Listender zugreifen (ItemEvents) Java Basics - Anfänger-Themen 7
S GUI Frame wechseln Java Basics - Anfänger-Themen 15
C Exportierte JAR öffnet zweiten Frame nicht mehr Java Basics - Anfänger-Themen 7
C Erkennen ob Frame geschlossen wurde Java Basics - Anfänger-Themen 2
C Erste Schritte Spieler an anderen Frame weitergeben Java Basics - Anfänger-Themen 23
G Probleme bei Frame aufgaben Java Basics - Anfänger-Themen 6
CptK Interface Klasse Frame (extends JFrame) aus anderer Klasse schließen Java Basics - Anfänger-Themen 7
S Interface (WindowBuilder) Panels in einen Frame einfügen Java Basics - Anfänger-Themen 10
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
D Interface Frame doppelt durch Aufruf der GUI Klasse Java Basics - Anfänger-Themen 1
M Erste Schritte Neuen Frame nur einmal offen haben Java Basics - Anfänger-Themen 6
schoenosrockos JButton füllt immer das ganze frame Java Basics - Anfänger-Themen 1
R Erste Schritte Frame mit Ladebalken und BestätigungsButton Java Basics - Anfänger-Themen 10
das_leon Interface Frame in einem Frame (Window Builder) Java Basics - Anfänger-Themen 2
Anfänger2011 Frame zeigt nicht gewünschtes Ergebnis an ... Java Basics - Anfänger-Themen 5
Z Object Kreis am Frame abprallen lassen! Java Basics - Anfänger-Themen 12
D Bild in Frame einfügen Java Basics - Anfänger-Themen 11
I Methoden Schwierikeiten mit Protokollfenster (Frame Objekt) Java Basics - Anfänger-Themen 4
A mehrere Panels in eigenen Klasssen in einem Frame Java Basics - Anfänger-Themen 16
J Extra Fenster (Frame) Java Basics - Anfänger-Themen 20
W Frame in anderer Klasse anzeigen lassen Java Basics - Anfänger-Themen 1
E Von Instanz des Dialogs auf das Frame zugreifen Java Basics - Anfänger-Themen 8
E 2. JFrame erkennt 1. Frame Java Basics - Anfänger-Themen 6
C Bild ins Frame laden und Objekte drüber legen Java Basics - Anfänger-Themen 1
R File chooser Dateien in frame anzeigen lassen Java Basics - Anfänger-Themen 5
L bestimmten Frame anzeigen lassen? Java Basics - Anfänger-Themen 6
H Textfeldinhalt löschen nachdem Frame geschlossen wird Java Basics - Anfänger-Themen 8
L Kalender Java Frame Java Basics - Anfänger-Themen 7
A Frame Java Basics - Anfänger-Themen 3
P Verwirrung mit AWT Frame und main Methode Java Basics - Anfänger-Themen 19
A Frame java Java Basics - Anfänger-Themen 3
D Frame schließt gleich alle Frames Java Basics - Anfänger-Themen 5
T udp -> bytearray -> image -> ausgabe via frame Java Basics - Anfänger-Themen 6
J Erste Schritte Speichern / Speichern unter / title Frame Java Basics - Anfänger-Themen 5
F Frame in Frame Java Basics - Anfänger-Themen 3
U GUI - resize frame Java Basics - Anfänger-Themen 13
J Open reading Frame Java Basics - Anfänger-Themen 4
J Erstelltes Frame wird nicht angezeigt Java Basics - Anfänger-Themen 2
K Frame öffnen klappt nicht?! Java Basics - Anfänger-Themen 36
JAVAnnik Anwendung nach Schließen vom letzen Frame Java Basics - Anfänger-Themen 9
B Referenz zu anderen Frame Java Basics - Anfänger-Themen 10
A Frame Background Java Basics - Anfänger-Themen 21
S Klassen Klassenname = Frame? Java Basics - Anfänger-Themen 11
R Eingefärbtes Panel wird in Frame nicht angezeigt Java Basics - Anfänger-Themen 10
I Java - Text in neuem Frame wird nicht angezeigt Java Basics - Anfänger-Themen 4
M Frame mit mehreren areas Java Basics - Anfänger-Themen 14
B Frame über Button öffnen Java Basics - Anfänger-Themen 8
R Button soll neuen Frame öffnen Java Basics - Anfänger-Themen 21
L Variablen Frame Variablen-Schleife Java Basics - Anfänger-Themen 3
D Neues Frame öffnen Java Basics - Anfänger-Themen 7
V Frame bleibt grau Java Basics - Anfänger-Themen 5
G Polygon in Frame zeichnen Java Basics - Anfänger-Themen 3
F frame wird nicht angezeigt? Java Basics - Anfänger-Themen 10
S 2 Panels in einen Frame Java Basics - Anfänger-Themen 5
H Panels in Frame einbinden Java Basics - Anfänger-Themen 3
E Frame neu Zeichnen Java Basics - Anfänger-Themen 3
A Bild wird auf Frame nicht angezeigt! Keine Fehlermeldung Java Basics - Anfänger-Themen 3
O Grafik in Frame laden Java Basics - Anfänger-Themen 9
T Frame öffnen Java Basics - Anfänger-Themen 6
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
I JTable in bestehenden Frame integrieren Java Basics - Anfänger-Themen 6
Y Hilfe: JOGL / OPENGL in Frame Java Basics - Anfänger-Themen 2
J Frame schließen, Ereignis behandeln, Vorgang abbrechen Java Basics - Anfänger-Themen 4
Luk10 Frame schließen Java Basics - Anfänger-Themen 2
A Frame schließen!? Help! Java Basics - Anfänger-Themen 5
A Frame reagiert nicht Java Basics - Anfänger-Themen 6
H Modalen JDialog schließen, ohne dabei das Parent-Frame zu schließen Java Basics - Anfänger-Themen 7
J Frame bleibt schwarz beim Laden Java Basics - Anfänger-Themen 11
ModellbahnerTT Unterschied zwischen zwei Frame close Varianten Java Basics - Anfänger-Themen 3
R Frame Inhalt ausrichten Java Basics - Anfänger-Themen 5
MisterSeven Java Swing - Wie Frame größe festlegen?! Java Basics - Anfänger-Themen 10
E Verständnisfrage Syntax: frame.getContentPane().add(button) Java Basics - Anfänger-Themen 11
Stillmatic1985 Label in einem Frame zentrieren Java Basics - Anfänger-Themen 4
A Grafik erstellen und in Frame einfügen Java Basics - Anfänger-Themen 17
A Java Frame per X schließen? Java Basics - Anfänger-Themen 7
H2SO3- image beim awt frame wegmachen Java Basics - Anfänger-Themen 2
kulturfenster Panel in Frame integrieren Java Basics - Anfänger-Themen 5
kulturfenster Per Button Frame schliessen Java Basics - Anfänger-Themen 2
C Frame, JFrame, JDialog Java Basics - Anfänger-Themen 12
I JButton zum frame schließen Java Basics - Anfänger-Themen 6
M Variable in Frame anzeigen Java Basics - Anfänger-Themen 11
O Beim Schließen JDialog, im Frame-Owner eine Methode starten Java Basics - Anfänger-Themen 6
hdi Desktop-Auflösung abfragen -> setLocation() von Frame Java Basics - Anfänger-Themen 5
hdi keylistener hat keinen fokus oder: listener ohne frame? Java Basics - Anfänger-Themen 10
S Übergabe von Frame-Objekt - kritisch? Java Basics - Anfänger-Themen 7
N Frame in Frame erstellen Java Basics - Anfänger-Themen 2
B Java-Frame Taschenrechner - String -> Int und umgekehrt Java Basics - Anfänger-Themen 8
G Bild wird im falschen Frame angezeigt Java Basics - Anfänger-Themen 5
G Frame soll Focus behalten Java Basics - Anfänger-Themen 2
H Frame schließen Java Basics - Anfänger-Themen 5
G Frame Applet oder doch was anderes Java Basics - Anfänger-Themen 2
M Frame zeigt Desktop als Hintergrund Java Basics - Anfänger-Themen 2
J Eine swf-datei in einen Frame einfügen? Java Basics - Anfänger-Themen 6
K Schrift und Farben im Frame (Anfänger) Java Basics - Anfänger-Themen 2
D Frame in Center Screen Java Basics - Anfänger-Themen 7
A Frame aus Applet erzeugen und mit Inhalt füllen Java Basics - Anfänger-Themen 5
G Problemme mit: Aufruf einer Klasse aus einem Frame Java Basics - Anfänger-Themen 5
M Frame Schließen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen


Oben