Hallo allerseits,
ich habe ein Programm erstellt, jedoch noch einige Probleme mit der GUI, ich schaffe es nicht, dass sie sich so verhält wie ich das möchte.
Und zwar bestehen die oberen 2/3 aus einer Tabelle und unten gibt es dazu ein Formular.
Das Formular ist mit dem DefaultFormBuilder gebastelt und passt vom Verhalten her schon.
Die Tabelle jedoch nicht. Diese soll bei maximiertem Programm die volle Bildschirmbreite einnehmen, bei Minimierungen bis zu einer gewissen Größe verkleinert werden, in der Breite so breit wie das Formular ist, in der Höhe bis ca 50% ihrer Ursprungsgröße.
Hier mal ein vereinfachter Ausschnitt dazu:
Das Ganze ist in einer Klasse die von JPanel ableitet. Im letzten Abschnitt das Layout zu ändern hab ich zuerst versucht, hatte aber auch nichts gebracht. Auch an anderen Stellen habe ich schon mit FormLayout und :fill rumprobiert.
Ein weiterer Ansatz war ein minimales Layout zu basteln und dann mit GridBagLayout und fill zu arbeiten, sprich dynamisch zu vergrößern und sich gar nicht um verkleinern kümmern, hat aber auch nicht funktioniert.
Als ich die ScrollPane in der die Tabelle liegt, mal direkt zum (Form)Layout hinzugefügt hatte, hatte diese tatsächlich das gewünschte Verhalten in der Breite, aber nicht in der Höhe, an einer anderen Stelle des Programms beinhaltet das die ScrollPane enthaltende Panel jedoch noch eine zweite Komponente.
Muss ich nun jedem Container der eine Komponente enthält, also in dem Fall zig Panels, ein Layout hinzufügen damit das Ganze funktioniert? Gibt es auch noch einfacherere Möglichkeiten?
Gruß
Nokia8210
ich habe ein Programm erstellt, jedoch noch einige Probleme mit der GUI, ich schaffe es nicht, dass sie sich so verhält wie ich das möchte.
Und zwar bestehen die oberen 2/3 aus einer Tabelle und unten gibt es dazu ein Formular.
Das Formular ist mit dem DefaultFormBuilder gebastelt und passt vom Verhalten her schon.
Die Tabelle jedoch nicht. Diese soll bei maximiertem Programm die volle Bildschirmbreite einnehmen, bei Minimierungen bis zu einer gewissen Größe verkleinert werden, in der Breite so breit wie das Formular ist, in der Höhe bis ca 50% ihrer Ursprungsgröße.
Hier mal ein vereinfachter Ausschnitt dazu:
Java:
dfb = new DefaultFormBuilder(formlayout)
dfb.appendColumn("right:pref");
dfb.appendColumn("5dlu");
dfb.appendColumn("left:pref");
txt_name = new JTextField();
dfb.append("Name:", txt_name);
dfb.nextLine();
txt_vorname = new JTextField();
dfb.append("Vorname:", txt_vorname);
dfb.nextLine();
pnl_anw = dfb.getPanel();
//Notwendig weil später mitunter mehr Komponenten eingefügt werde
panel_formular_container = new JPanel();
panel_formular_container.add(pnl_anw);
panel_button = new JPanel();
panel_button.add(btn_speichern);
panel_button.add(btn_loeschen);
panel_form = new JPanel();
panel_form.setLayout(new BorderLayout());
panel_form.add(panel_formular_container, BorderLayout.NORTH);
panel_form.add(panel_button, BorderLayout.CENTER);
panel_suchen = new JPanel();
panel_suchen.add(txt_suche);
panel_suchen.add(btn_suchen);
sp_tabelle.setMaximumSize(new Dimension(1000, 600));
sp_tabelle.setMinimumSize(new Dimension(500, 300));
sp_tabelle.setPreferredSize(new Dimension(500,300));
panel_daten = new JPanel();
panel_daten.add(sp_tabelle);
panel_tabelle = new JPanel();
panel_tabelle.setLayout(new GridBagLayout());
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
c.fill = GridBagConstraints.BOTH;
panel_tabelle.add(panel_daten, c);
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 1;
c.fill = GridBagConstraints.NONE;
panel_tabelle.add(panel_suchen, c);
this.setLayout(new BorderLayout());
this.add(panel_tabelle, BorderLayout.NORTH);
this.add(panel_form, BorderLayout.SOUTH);
this.setVisible(true);
Das Ganze ist in einer Klasse die von JPanel ableitet. Im letzten Abschnitt das Layout zu ändern hab ich zuerst versucht, hatte aber auch nichts gebracht. Auch an anderen Stellen habe ich schon mit FormLayout und :fill rumprobiert.
Ein weiterer Ansatz war ein minimales Layout zu basteln und dann mit GridBagLayout und fill zu arbeiten, sprich dynamisch zu vergrößern und sich gar nicht um verkleinern kümmern, hat aber auch nicht funktioniert.
Als ich die ScrollPane in der die Tabelle liegt, mal direkt zum (Form)Layout hinzugefügt hatte, hatte diese tatsächlich das gewünschte Verhalten in der Breite, aber nicht in der Höhe, an einer anderen Stelle des Programms beinhaltet das die ScrollPane enthaltende Panel jedoch noch eine zweite Komponente.
Muss ich nun jedem Container der eine Komponente enthält, also in dem Fall zig Panels, ein Layout hinzufügen damit das Ganze funktioniert? Gibt es auch noch einfacherere Möglichkeiten?
Gruß
Nokia8210