Hallo liebe Community,
da ich sehr häufig bei der Erstellung von GUIs meine Probleme habe, beschleicht mich doch das Gefühl, dass ich bei der Verwendung der verschiedenen LayoutManager etwas grundlegend falsch verstehe. Daher hoffe ich auf ein wenig generelle Hilfe an einem konkreten Beispiel/Problem mit der Bitte auf Hinweise, was ich hier grundsätzlich falsch mache bzw. warum die GUI so angezeigt wird, wie sie angezeigt wird
Also zum konkreten Projekt: Ich verwende ein JFrame auf welchem als grundlegender LayoutManager ein BorderLayout zum Einsatz kommt. Im Center-Part befinden sich die meisten Komponenten (und werden sogar so angezeigt, wie ich das will
). Der LineEnd-Part enthält ein Panel (welches im konkreten Projekt wahlweise angezeigt wird oder auch nicht). Hier sollen neben ein paar Buttons in gitterförmiger Struktur JSpinner angezeigt werden. Die Wahl fiel auf ein GridLayout. Aufgebaut habe ich das mit dem unten stehenden Quelltext..
Das Problem: Zwischen den Buttons (oben) und den JSpinnern (unten) befindet sich ein so großer Abstand, dass die Spinner nicht mehr passen und auch zu klein dargestellt werden (siehe auch Bild).. Hier frage ich mich tatsächlich: Warum?
da ich sehr häufig bei der Erstellung von GUIs meine Probleme habe, beschleicht mich doch das Gefühl, dass ich bei der Verwendung der verschiedenen LayoutManager etwas grundlegend falsch verstehe. Daher hoffe ich auf ein wenig generelle Hilfe an einem konkreten Beispiel/Problem mit der Bitte auf Hinweise, was ich hier grundsätzlich falsch mache bzw. warum die GUI so angezeigt wird, wie sie angezeigt wird
Also zum konkreten Projekt: Ich verwende ein JFrame auf welchem als grundlegender LayoutManager ein BorderLayout zum Einsatz kommt. Im Center-Part befinden sich die meisten Komponenten (und werden sogar so angezeigt, wie ich das will
Das Problem: Zwischen den Buttons (oben) und den JSpinnern (unten) befindet sich ein so großer Abstand, dass die Spinner nicht mehr passen und auch zu klein dargestellt werden (siehe auch Bild).. Hier frage ich mich tatsächlich: Warum?
Java:
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Dimension;
public class TestView extends JFrame {
public TestView() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
init();
setVisible(true);
}
public void init() {
setPreferredSize(new Dimension(300,300));
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
panel1.setLayout(new BorderLayout());
panel2.setLayout(new GridLayout(0,1));
//panel3 bleibt beim Standard-FlowLayout
panel4.setLayout(new GridLayout(0,3,10,10));
for (int i=0;i<10;i++) {
panel4.add(new JSpinner());
panel4.add(new JLabel("bis"));
panel4.add(new JSpinner());
} // end of for
panel3.add(new JButton("Button a"));
panel3.add(new JButton("Button b"));
panel2.add(panel3);
panel2.add(panel4);
panel1.add(new JButton("Viel Content"), BorderLayout.CENTER);
panel1.add(panel2, BorderLayout.LINE_END);
getContentPane().add(panel1);
pack();
}
}