Layout - Components richtig setzen

Status
Nicht offen für weitere Antworten.

kloakenratte

Mitglied
Hallo!

Also, hab einen JFrame, in dem ich mehrere Panels hab, zb. SearchPanel und die will ich eben über das Menü entweder visible setzen oder invisible, je nachdem welcher ausgewählt wird zb. bei Suchen wird SearchPanel visible gesetzt und das EditPanel und DeletePanel auf invisible. Je nachdem wird auch mit this.setContentPane(..) gewechselt.
Das klappt ja auch ganz gut.
Auf den Panels befinden sich jeweils Components (Combobox, Textfield, Label, etc.) und die setze ich an die richtige Position bzw. weise die Größe bei der Fkt. paintComonents(). Wird die Größe des JFrame verändert, werden im Eventhandler componentResized(..) die Components neu gesetzt. Mein Problem ist jetzt, dass die Panels zu der zeit immer die falsche Größe haben und deshalb die Components falsch gesetzt sind. Ich geh doch richtig in der Annahme, dass die Panels, wenn sie als ContentPane gesetzt sind, die neue Größe des JFrames mitbekommen sollten. Vor allem das JScrollPane auf dem SearchPanel macht mir Schwierigkeiten, wenn ich die Größe ändere bzw. ändern will.
Wär für jegliche Anregungen dankbar!


Code:
imports ...

public class SearchPanel extends JPanel
{
	private JPanel pnl_search = null;
	private JComboBox cbx_search = null;
	...
	
	public SearchProduct(ActionListener listener, Color bckgColor)
	{
		this.setBackground(bckgColor);
		this.setLayout(null);
		this.setName("SearchPanel");
		
		this.pnl_search = new JPanel();
		this.pnl_search.setBackground(new Color(70,130,180));
		this.pnl_search.setBorder(BorderFactory.createEtchedBorder());
		
		this.cbx_search = new JComboBox(ComboBoxItems.getCBItems()); // Vector mit Items
		this.cbx_search.setEditable(false);
		this.pnl_search.add(this.cbx_search);

		...
	}
	
	public void paintComponents()
	{
		try
		{			
			this.pnl_search.setLocation(20, 20);
			this.pnl_search.setSize(this.getWidth() - 40, 61);

			
			this.cbx_search.setLocation(20, 21);
			this.cbx_search.setSize(200,19);
			this.cbx_search.setMinimumSize(new Dimension(200,19));
			this.cbx_search.setMaximumSize(new Dimension(200,19));

			...
			
		}
		catch(Exception ex)
		{
			ErrorLogging.GenerateErrorLog(ex);
		}
	}
}


public class Pgm extends JFrame implements ComponentListener
{
	private SearchPanel search = null;

	public Pgm()
	{
		...
		search = new SearchPanel(...);

		this.search.paintComponents();
		this.search.setVisible(true);		
		
		this.setContentPane(search);
	}

	public static void main(String[] args) 
	{
		// TODO Automatisch erstellter Methoden-Stub
		Pgm  progi = new Pgm();
		progi.setVisible(true);	
	}

	public void componentResized(java.awt.event.ComponentEvent e) 
	{
		this.search.paintComponents();
                        ....
	}
}
 
G

Guest

Gast
kannst du statt
Code:
         this.cbx_search.setLocation(20, 21); 
         this.cbx_search.setSize(200,19); 
         this.cbx_search.setMinimumSize(new Dimension(200,19)); 
         this.cbx_search.setMaximumSize(new Dimension(200,19));
nicht
Code:
this.cbx_search.setBounds(20, 21, 200,19);
benutzen?

Ausserdem wenn du schon alle setSizeMethoden benutzen willst, dann auch die
Code:
         this.cbx_search.setPreferedSize(new Dimension(200,19));

Ich glaub die würd dann auch machen was du willst, aber schwörn würd ich nicht drauf :)
 

kloakenratte

Mitglied
Hallo!

Also erstmal danke für den Tipp mit setPreferedSize... hat geklappt. ;)

Das mit setBounds ist mir noch unklar... im Grunde macht das ja auch nichts anderes als Location und Size setzen oder? Ich hab da eher das Gefühl, dass das Panel nie die genau richtige Größe bekommt und deshalb platzieren sich meine Components falsch.
Aber ich lass mich ja gerne vom Gegenteil überzeugen. :)
 
G

Guest

Gast
Was da jetzt genau der Unterschied ist weiss ich nicht genau, ich hab mir das setBounds angewöhnt, bzw wenn ich das nicht benutzen kann benutz ich alle 2 setSizeMethoden. Sicher ist sicher :)

Ob dein Panel die richtige Grösse bekommt kannst du dir über System.out.println(StringIrgendwas); ausgeben lassen. Wenn du aber sagst das es so geht und auch die Grösse stimmt dann würd ich mal davon ausgehen das die Grösse stimmt ;-)
 

kloakenratte

Mitglied
Naja, lass mir schon ne ganze weile die größe von jframe und dem contentpane-panel ausgeben. so fällt mir nicht wirklich etwas auf, das panel ist einen deut kleiner als mein fenster, was ja normal ist. ich hab nur angst, dass die fkt paintcomponent genau dann aufgerufen wird, bevor das panel die neue größe hat.
aber ich werd jetzt mal deinen tipp versuchen und dann bescheid geben. danke jedenfalls für die schnelle antwort. :)
 

kloakenratte

Mitglied
soda... *knixal mach* es funzt. :) weiß nicht, was der unterschied zwischen setBounds und setLocation+setSize is, aber es macht einen erheblichen unterschied was meine fkt anbelangt.
Das einzige was mir noch nicht gefällt ist folgendes:
Hab auf meinem SearchPanel ein weiteres Panel, wo eben die Components für die Suche oben sind (JLabel, JComboBox und JButton). Ist eigentlich nur oben, damit ich den Hintergrund anders gestalten konnte. Jedenfalls... wenn ich mit der Maus das Fenster größer ziehen will und die Maus noch gedrückt halte (also nicht auslasse), hüpfen die Components kurzzeitig auf dem kleinen Panel in die Mitte, bis ich die Maus auslasse, dann wird richtig angeordnet. Das in die Mitte hüpfen ist allerdings ziemlich schmutzig. Vl fällt ja jemandem dazu etwas ein...
Theoretisch müsste ich da in einem Event eingreifen, das geworfen wird, wenn das Fenster vergrößert wird und nicht wie bei resized erst danach.
 
G

Guest

Gast
Ich weiss jetzt nicht ob das was hilft, aber mir fällt grad auf das du die eine methode paintComponents genannt hast.

wenn du die paintComponent nennst und darin super(); und dann den rest von deinem Code aufrufst kannst du hier statt :
Code:
   public void componentResized(java.awt.event.ComponentEvent e) 
   { 
      this.search.paintComponents(); 
                        .... 
   }

das schreiben:
Code:
   public void componentResized(java.awt.event.ComponentEvent e) 
   { 
      this.search.repaint(); 
                        .... 
   }
aufrufen. Das wär IMO sauberer, obs aber deinen Fehler wegmacht weiss ich ohne testen nicht
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Welches Java Layout sollte ich verwenden? AWT, Swing, JavaFX & SWT 3
S Layout - Problem AWT, Swing, JavaFX & SWT 1
D Layout einer scene mit ListView Elementen und Zwei Textfeldern AWT, Swing, JavaFX & SWT 1
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
melaniemueller Layout wechseln über RadioButtons AWT, Swing, JavaFX & SWT 4
E LayoutManager Welcher Layout-Mix löst mein Problem? AWT, Swing, JavaFX & SWT 3
J Swing Hilfe bei Layout AWT, Swing, JavaFX & SWT 2
R Layered Layout AWT, Swing, JavaFX & SWT 1
E showAndWait is not allowed during animation or layout processing Memory FX AWT, Swing, JavaFX & SWT 2
newJavaGeek Grid-Layout problem AWT, Swing, JavaFX & SWT 7
E Swing Layout während der Laufzeit anpassen AWT, Swing, JavaFX & SWT 3
P JavaFX Zugriff auf Fenster/Layout-Container in eigenen Klassen AWT, Swing, JavaFX & SWT 5
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
S Kann javafx.scene.layout.VBoxBuilder nicht importieren AWT, Swing, JavaFX & SWT 3
OSchriever Layout über Radiobuttons ändern AWT, Swing, JavaFX & SWT 4
B Swing Probleme mit dem Layout AWT, Swing, JavaFX & SWT 1
Hatsi09 JButton text layout AWT, Swing, JavaFX & SWT 9
I JavaFX - festes Layout AWT, Swing, JavaFX & SWT 1
S JavaFX TableView einzelne Zelle Layout zuweisen AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Zwei gleichgroße Panels in einem Scrollpane mit Layout AWT, Swing, JavaFX & SWT 9
Neumi5694 Swing Card-Layout, Fokus AWT, Swing, JavaFX & SWT 2
kilopack15 Interface mit Layout verknüpfen AWT, Swing, JavaFX & SWT 2
Y Layout/Ausrichtungsprobleme AWT, Swing, JavaFX & SWT 4
T JavaFX Custom Layout AWT, Swing, JavaFX & SWT 5
A GUI Layout AWT, Swing, JavaFX & SWT 11
A Layout-Manager, JScrollPane, ... Chaos AWT, Swing, JavaFX & SWT 5
L wie Layout-Grid in JXPanel anzeigen? AWT, Swing, JavaFX & SWT 5
L Eigene Component Layout AWT, Swing, JavaFX & SWT 4
Soloeco LayoutManager Wie und welches Layout nutze ich am Besten? AWT, Swing, JavaFX & SWT 13
M LayoutManager Modalen JDialog ein Layout zuweisen AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout reagiert nicht auf Constraints AWT, Swing, JavaFX & SWT 4
IsSchoGuat LayoutManager Layout-Containergrösse AWT, Swing, JavaFX & SWT 4
F GridBag Layout AWT, Swing, JavaFX & SWT 1
Z Absolutes Layout / Kontrolle über Anordnung AWT, Swing, JavaFX & SWT 3
M Mehrere Jpanel in einem JScrollPane (Layout) AWT, Swing, JavaFX & SWT 2
M Layout-Probleme unter Swing AWT, Swing, JavaFX & SWT 5
D LayoutManager GUI skalieren und deren Komponenten mit Grid(Bag)Layout-Manager. AWT, Swing, JavaFX & SWT 5
J ComboBoxModel addElement verändert Layout AWT, Swing, JavaFX & SWT 8
E Probelm mit Layout AWT, Swing, JavaFX & SWT 1
B Hilfe welches Layout brauch ich AWT, Swing, JavaFX & SWT 4
P Tipps für GUI-Layout AWT, Swing, JavaFX & SWT 2
M Passender Layout-Manager AWT, Swing, JavaFX & SWT 3
M LayoutManager Layout zur Laufzeit ändern AWT, Swing, JavaFX & SWT 8
N Swing Zweifarbiges Layout für den Filechooser AWT, Swing, JavaFX & SWT 12
B LayoutManager Card Layout AWT, Swing, JavaFX & SWT 2
E Angehängtes Layout, aber wie? AWT, Swing, JavaFX & SWT 12
1 Eigenes Layout schreiben AWT, Swing, JavaFX & SWT 4
B SWT layout invalidieren in SWT? AWT, Swing, JavaFX & SWT 4
R Welchen Layout Manager/ Wie strukturieren? AWT, Swing, JavaFX & SWT 14
J Layout: oben 20% unten 80% AWT, Swing, JavaFX & SWT 12
T Layout für Listendarstellung AWT, Swing, JavaFX & SWT 3
F LayoutManager Null-Layout unter Linux im TreeCellEditor AWT, Swing, JavaFX & SWT 3
K Eclipse Layout (Gimp Layout, Tiled Layout...) AWT, Swing, JavaFX & SWT 4
C LayoutManager Passendes Layout gesucht AWT, Swing, JavaFX & SWT 2
M Layout funktioniert nicht AWT, Swing, JavaFX & SWT 3
dzim Layout von Panes in JFX2 AWT, Swing, JavaFX & SWT 17
H Layout Idee AWT, Swing, JavaFX & SWT 8
M Swing Dynamisches Layout AWT, Swing, JavaFX & SWT 10
P Swing welchen Layout Manager verwenden AWT, Swing, JavaFX & SWT 9
J LayoutManager Komponentenaustausch zerschießt Layout AWT, Swing, JavaFX & SWT 4
F Layout-Problem AWT, Swing, JavaFX & SWT 2
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
B Anderen Layout-Manager verwenden AWT, Swing, JavaFX & SWT 17
E Null-Layout - Wie geht es ohne? AWT, Swing, JavaFX & SWT 19
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Bild in JPanel verschiebt Layout. Wie fixieren? AWT, Swing, JavaFX & SWT 9
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
D Problem mit 3-Spalten Layout AWT, Swing, JavaFX & SWT 17
ARadauer Wenig Material zum Thema: Design, Layout, Usability von Swing Anwendungen AWT, Swing, JavaFX & SWT 11
S LayoutManager Welcher LayoutManager für dieses zweispaltige Layout? AWT, Swing, JavaFX & SWT 13
G LayoutManager Layout welches von Links nach rechts anordnet mit TOP Alignment! AWT, Swing, JavaFX & SWT 5
A Best practice für konkretes Layout AWT, Swing, JavaFX & SWT 10
G LayoutManager Layout für Spalten AWT, Swing, JavaFX & SWT 8
A Layout/JPanelgröße AWT, Swing, JavaFX & SWT 6
S pack() bei null-Layout AWT, Swing, JavaFX & SWT 10
C SWT Tabellen-Layout in StyledText? AWT, Swing, JavaFX & SWT 6
J LayoutManager Welchen Layout/Design-Manager? AWT, Swing, JavaFX & SWT 4
R Swing Layout setzen AWT, Swing, JavaFX & SWT 3
L Layout automatische Anpassung umgehen? AWT, Swing, JavaFX & SWT 5
A Problem mit Layout-Manager AWT, Swing, JavaFX & SWT 11
J Button Layout anpassen AWT, Swing, JavaFX & SWT 22
H LayoutManager Layout mit GridBagLayout machbar? AWT, Swing, JavaFX & SWT 6
B Buttongröße im Layout AWT, Swing, JavaFX & SWT 4
B LayoutManager Layout Problem AWT, Swing, JavaFX & SWT 14
O LayoutManager Layout entwerfen AWT, Swing, JavaFX & SWT 3
A diverse Layout-Fragen AWT, Swing, JavaFX & SWT 4
F LayoutManager Eigenes Layout die Lösung?! AWT, Swing, JavaFX & SWT 4
dzim SWT Layout mit Sections aus Eclipse Forms AWT, Swing, JavaFX & SWT 17
F JScrollPane verwirft Layout von JPanel AWT, Swing, JavaFX & SWT 2
C LayoutManager Layout und vergrößern des Frames AWT, Swing, JavaFX & SWT 5
E Swing Runde Buttons / Position eines Obj. im Layout AWT, Swing, JavaFX & SWT 7
S Swing UI-Elemente ordnen sich ungewollt in einer Reihe (ohne Layout) AWT, Swing, JavaFX & SWT 5
A Ungewollte Layout änderungen AWT, Swing, JavaFX & SWT 3
A Suche: Eclipse-GUI-Layout AWT, Swing, JavaFX & SWT 5
E JPanel mit Null Layout entfernt Buttons AWT, Swing, JavaFX & SWT 11
N Swing Layout positionieren AWT, Swing, JavaFX & SWT 2
B Methode setzt nicht das Layout in einer if-Abfrage AWT, Swing, JavaFX & SWT 13
H LayoutManager Dynamisches Layout AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben