Hallo zusammen,
Ich muss sagen ich bin neu hier und erst seit kurzem auf Java umgestiegen.
Ich versuche eine kleine GUI zu machen um etwas vertraut mit dem ganzen zu werden.
Ich möchte ein Fenster mit 3 Spalten, die sich proportional zueinander vergrössern/verkleinern, wenn man die Fenstergrösse ändert. Ich habe deshalb mal ein GridBagLayout genommen (bin mir nicht sicher ob dies das beste ist dafür).
In der letzten Spalte befindet sich unter anderem ein JTextArea in einem JScrollPane eingebetet. Es soll sich einfach der Breite der Spalte anpassen.
Wenn ich aber das Fenster kleiner mache, verschwindet die JTextArea ganz und es wird nur noch etwas kleines komisches angezeigt. (Siehe Screenshot)
Ich habe ziemlich mit setMinimumSize,setMaximumSize,setPreferedSize und den Angaben bei new JTextArea(rows,columns) herumgespielt und das hat mich eigentlich mehr verwirrt als geholfen.
Die Angaben von setMinimumSize und setMaximumSize scheint mein GridBagLayout zudem überhaupt nicht einzuhalten.
Hier mal der Code:
Im Anhang: 1.jpg (Der Fehler) und 2.jpg (Wie es richtig aussieht am Anfang)
/edit1: Fast vergessen: Ich verwende Eclipse Classic, und mein Betriebsystem ist Windows XP. Tut aber wohl nicht viel zu Sache hier.
Ich bin froh für jeden Hinweis.
Beste Grüsse,
judos
Ich muss sagen ich bin neu hier und erst seit kurzem auf Java umgestiegen.
Ich versuche eine kleine GUI zu machen um etwas vertraut mit dem ganzen zu werden.
Ich möchte ein Fenster mit 3 Spalten, die sich proportional zueinander vergrössern/verkleinern, wenn man die Fenstergrösse ändert. Ich habe deshalb mal ein GridBagLayout genommen (bin mir nicht sicher ob dies das beste ist dafür).
In der letzten Spalte befindet sich unter anderem ein JTextArea in einem JScrollPane eingebetet. Es soll sich einfach der Breite der Spalte anpassen.
Wenn ich aber das Fenster kleiner mache, verschwindet die JTextArea ganz und es wird nur noch etwas kleines komisches angezeigt. (Siehe Screenshot)
Ich habe ziemlich mit setMinimumSize,setMaximumSize,setPreferedSize und den Angaben bei new JTextArea(rows,columns) herumgespielt und das hat mich eigentlich mehr verwirrt als geholfen.
Die Angaben von setMinimumSize und setMaximumSize scheint mein GridBagLayout zudem überhaupt nicht einzuhalten.
Hier mal der Code:
Java:
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.util.ArrayList;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.border.Border;
public class Window {
private JFrame jframe;
private DefaultListModel listModel;
private String lastFilter;
public static void main(String [] args) {
new Window();
}
public Window() {
this.lastFilter = "";
this.jframe = new JFrame();
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// jframe.setMinimumSize(new Dimension(400,300));
// jframe.addWindowListener(new WindowListener());
jframe.setTitle("Kontaktliste ");
GridBagLayout borderLayout = new GridBagLayout();
GridBagConstraints c=new GridBagConstraints();
jframe.setLayout(borderLayout);
c.anchor=GridBagConstraints.NORTH;
c.fill=GridBagConstraints.BOTH;
c.gridx=0;
c.gridy=0;
c.weightx=1;
c.weighty=1;
jframe.add(createWestPanel(), c);
c.weightx=1;
c.gridx=1;
jframe.add(createCenterPanel(), c);
c.weightx=0.2;
c.gridx=2;
jframe.add(createEastPanel(), c);
// Fenster vollenden
jframe.pack();
// WindowHelpers.centerWindow(jframe);
jframe.setVisible(true);
}
private Component createEastPanel() {
JPanel panelRight = new JPanel();
Border etchedBdr = BorderFactory.createMatteBorder(5, 5, 5, 5,
new Color(240, 240, 255));
panelRight.setBorder(etchedBdr);
panelRight.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.NORTH;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.weighty = 1;
panelRight.add(createEastPanel1(), c);
c.gridy = 1;
panelRight.add(createEastPanel2(), c);
return panelRight;
}
private Component createEastPanel2() {
JPanel panel2=new JPanel();
return panel2;
}
private Component createEastPanel1() {
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.NORTH;
// c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.weighty = 1;
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("Vorname Name"), c);
c.weightx=1;
c.fill=GridBagConstraints.NONE;
JTextArea textarea = new JTextArea(10,1);
textarea.setPreferredSize(new Dimension(200,0));
textarea.setLineWrap(true);
textarea.setWrapStyleWord(true);
JScrollPane textPane = new JScrollPane(textarea);
textPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
// textPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
textPane.setPreferredSize(new Dimension(200,150));
textPane.setAutoscrolls(false);
c.gridy = 1;
panel.add(textPane, c);
return panel;
}
private Component createCenterPanel() {
Border etchedBdr = BorderFactory.createMatteBorder(5, 5, 5, 5,
new Color(240, 240, 255));
JPanel panelMitte = new JPanel();
// etchedBdr.
panelMitte.setBorder(etchedBdr);
panelMitte.setLayout(new GridLayout(1, 1));
// Inhalt Mittleres Panel
listModel = new DefaultListModel();
// refreshNodes();
JList list = new JList(listModel);
list.setMinimumSize(new Dimension(100,100));
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// list.addListSelectionListener(new ListListener());
list.setVisibleRowCount(20);
JScrollPane listScrollPane = new JScrollPane(list);
panelMitte.add(listScrollPane);
// list.addMouseListener(new ListMouseListener(list));
return panelMitte;
}
private JPanel createWestPanel() {
JPanel panelLeft = new JPanel();
Border etchedBdr = BorderFactory.createMatteBorder(5, 5, 5, 5,
new Color(240, 240, 255));
panelLeft.setBorder(etchedBdr);
panelLeft.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.NORTH;
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.weighty = 1;
panelLeft.add(createWestPanel1(), c);
c.gridy = 1;
panelLeft.add(createWestPanel2(), c);
return panelLeft;
}
private JPanel createWestPanel1() {
JPanel panelLeft1 = new JPanel();
panelLeft1.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
c.weightx = 0;
c.weighty = 1;
c.gridx = 0;
c.gridy = 0;
panelLeft1.add(new JLabel("Person:"), c);
c.gridx = 1;
c.gridy = 0;
c.weightx=1;
JTextField personTextField = new JTextField(13);
personTextField.setMaximumSize(new Dimension(120,30));
personTextField.setMinimumSize(new Dimension(50,15));
// personTextField.addKeyListener(new PersonKeyListener(personTextField));
panelLeft1.add(personTextField, c);
c.gridx = 0;
c.gridy = 1;
c.weightx=0;
panelLeft1.add(new JLabel("Gruppe:"), c);
c.gridx = 1;
c.gridy = 1;
c.weightx=1;
JTextField gruppeTextField = new JTextField(13);
gruppeTextField.setMaximumSize(new Dimension(120,30));
gruppeTextField.setMinimumSize(new Dimension(50,15));
panelLeft1.add(gruppeTextField, c);
return panelLeft1;
}
private JPanel createWestPanel2() {
// Linkes Panel Nr2
JPanel panelLeft2 = new JPanel();
return panelLeft2;
}
}
Im Anhang: 1.jpg (Der Fehler) und 2.jpg (Wie es richtig aussieht am Anfang)
/edit1: Fast vergessen: Ich verwende Eclipse Classic, und mein Betriebsystem ist Windows XP. Tut aber wohl nicht viel zu Sache hier.
Ich bin froh für jeden Hinweis.
Beste Grüsse,
judos
Anhänge
Zuletzt bearbeitet: