Hallo zusammen,
ich bräuchte mal einen dezenten Hinweis, wie ich am besten meine Layoutmanager so einstelle dass die Komponenten innerhalb des Frame automatisch angepasst werden , wenn entweder der Frame vergrößert/verkleinert wird oder sich die Bildschirmauflösung ändert.
Das JFrame selber bestimme ich folgend:
Für die Meisten Komponenten innerhalb eines Panels benutze ich den GridBagLayout-Manager, teilweise kommt aber auch der GridLayout-Manager zur Geltung.
Mit setPreferedSize bestimme ich die wichtigsten Komponenten, die Dimension wird aus einer extra Klasse gelesen.
Die restlichen Komponenten wie zB. JTables werden gar nicht erst bestimmt, werden bei mir alle in Scrollpanes eingefügt, sollte das eine Rolle spielen.
Jetzt habe ich von dem ComponentListener kurz gelesen, müsste ich sowas in die Wege leiten? Oder zB mit den Methoden revalidate() oder repaint()? Wenn ja, wo setze ich da am besten an.
Den Versuch es über getMinimumSize und getMaximumSize zu lösen hat auch nicht ganz funktioniert.
Oder wird das alles bequemer direkt über den Layoutmanager gelöst? Eine typische Platzierung über diesen sieht in der Regel so aus:
ich bräuchte mal einen dezenten Hinweis, wie ich am besten meine Layoutmanager so einstelle dass die Komponenten innerhalb des Frame automatisch angepasst werden , wenn entweder der Frame vergrößert/verkleinert wird oder sich die Bildschirmauflösung ändert.
Das JFrame selber bestimme ich folgend:
Java:
JFrame jf = new MyJFrame();
Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
jf.getSize(screen);
jf.pack();
jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
Für die Meisten Komponenten innerhalb eines Panels benutze ich den GridBagLayout-Manager, teilweise kommt aber auch der GridLayout-Manager zur Geltung.
Mit setPreferedSize bestimme ich die wichtigsten Komponenten, die Dimension wird aus einer extra Klasse gelesen.
Java:
public class ScreenSize {
private int jButton_xSize = 120;
private int jButton_ySize = 30;
private int jListSpieler_xSize = 100;
private int jListSpieler_ySize = 400;
private int jListMap_xSize = 100;
private int jListMap_ySize = 1200;
private int jListNation_xSize = 100;
private int jListNation_ySize = 800;
private int jScrollbar_xSize = 150;
private int jScrollbar_ySize = 290;
private int jCheckBox_xSize = 160;
private int jCheckBox_ySize = 30;
private int jScrollbarMatch_xSize = 650;
private int jScrollbarMatch_ySize = 215;
private int jScrollbarRangliste_xSize = 700;
private int jScrollbarRangliste_ySize = 300;
private int jScrollbarElo_xSize = 265;
private int jScrollbarElo_ySize = 120;
private int jScrollbarPrevSpieler_xSize = 230;
private int jScrollbarPrevSpieler_ySize = 211;
private int jChartPanelPrevSpieler_xSize = 350;
private int jChartPanelPrevSpieler_ySize = 250;
Die restlichen Komponenten wie zB. JTables werden gar nicht erst bestimmt, werden bei mir alle in Scrollpanes eingefügt, sollte das eine Rolle spielen.
Jetzt habe ich von dem ComponentListener kurz gelesen, müsste ich sowas in die Wege leiten? Oder zB mit den Methoden revalidate() oder repaint()? Wenn ja, wo setze ich da am besten an.
Den Versuch es über getMinimumSize und getMaximumSize zu lösen hat auch nicht ganz funktioniert.
Oder wird das alles bequemer direkt über den Layoutmanager gelöst? Eine typische Platzierung über diesen sieht in der Regel so aus:
Java:
GridBagConstraints layout = new GridBagConstraints();
JPanel ui_1 = new JPanel(new GridBagLayout());
layout.insets = new Insets(5,5,5,5);
layout.gridx = 0;
layout.gridy = 0;
layout.gridheight = 1;
ui_1.add(chartPanel_1, layout);
layout.gridx = 1;
layout.gridy = 0;
layout.gridheight = 1;
ui_1.add(chartPanel_2, layout);
layout.gridx = 0;
layout.gridy = 1;
layout.gridheight = 1;
ui_1.add(chartPanel_3, layout);
layout.gridx = 1;
layout.gridy = 1;
layout.gridheight = 1;
ui_1.add(chartPanel_4, layout);