Layout Manager

Status
Nicht offen für weitere Antworten.

guni

Bekanntes Mitglied
Hallo,

welcher Layout Manager ist eurer Meinung nach der Beste?
ich spiel mich da schon ewig herum (Anfänger) dass ich die Größe von den Textfeldern ein bisschen umstell und das Ganze ein bisschen schöner hinbring aber es tut sich nichts!!

hier der Code:

Code:
                JFrame fenster = new JFrame("Ereignisse");
		fenster.setVisible(false);
		
		// die ContentPane
		Container content = fenster.getContentPane();
		content.setLayout(new BorderLayout());
				
		// die Elemente
		JLabel l_ereig_name = new JLabel("Name: ");
		JTextField t_ereig_name = new JTextField("");
		JComboBox c_ereig_prop = new JComboBox(new Object[] {"Ort","Zeit","Personen"});
		JTextField t_ereig_prop = new JTextField("");
		JTree tr_overview = new JTree();
		JScrollPane sc_tree = new JScrollPane( tr_overview );
		
		// die Größe
		t_ereig_name.setMinimumSize(new Dimension(10,400));
		
		Box hBox = Box.createVerticalBox();
		// Elemente auf ContentPane
		final int border = 10;
		Box vBox = Box.createHorizontalBox();
		vBox.setBorder(BorderFactory.createEmptyBorder(border,border,border,border));
		vBox.add(l_ereig_name);
		vBox.add(Box.createHorizontalStrut(border));
		vBox.add(t_ereig_name);
		hBox.add(vBox);
		
		vBox = Box.createHorizontalBox();
		vBox.setBorder(BorderFactory.createEmptyBorder(0,border,border,border));
		vBox.add(c_ereig_prop);
		vBox.add(Box.createHorizontalStrut(border));
		vBox.add(t_ereig_prop);
		hBox.add(vBox);
		
		vBox = Box.createHorizontalBox();
		vBox.setBorder(BorderFactory.createEmptyBorder(0,border,border,border));
		vBox.add(sc_tree);
		vBox.add(Box.createVerticalGlue());
		hBox.add(vBox);
		
		
		content.add(hBox);

		fenster.pack();
		fenster.setSize(400,500);
                fenster.setLocationRelativeTo(null);
		fenster.setVisible(true);

Bitte um Hilfe!
danke.
guni
 
Man kann nicht sagen, das es einen "besten" LayoutManager gibt. Jeder ordnet die ihm übergebenen Komponenten nach einer anderen Strategie an. Sie haben alle ihre Daseinsberechtigung. Ohne das Wissen über die Funktionsweise bzw. Strategie der Anordnung der Komponenten kann man kein gutes GUI-Layout erzeugen.

Mach mal eine Skizze oder ein Bild davon, wie du dir es vorstellst, dann kann man dir auch konkrete Tipps geben.
 
hmm ...
hier ist der Screenshot ...
Screenshot-2.png

eigentlich entspricht es schon ziemlich dem, was ich haben will ...
nur: ich denke mir, dass das Ganze vielleicht um einiges einfacher geht.
Ausserdem hätt ich gern die Textboxen / die ComboBox ein bisschen niedriger ...
und mit element.size(new Dimension());
passiert da irgendwie nix 🙁

mfg, guni
 
Hier mal ein kompilierbares Beispiel für dein Fenster mit GridBagLayout:
Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class EventFrame extends JFrame {
   private JTextField eventNameTF, eventTypeTF;
   private JTree overviewTree;
   private JComboBox eventTypeCoBo;
   
   public EventFrame(String title) {
      super(title);
      setSize(400, 500);
      setLocationRelativeTo(null);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      
      setLayout(new GridBagLayout());
      
      JLabel eventNameLbl = new JLabel("Name:");
      addComponent(eventNameLbl, 0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(10, 10, 5, 0));
      
      eventNameTF = new JTextField();
      addComponent(eventNameTF, 1, 0, 0, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(10, 5, 5, 10));
      
      eventTypeCoBo = new JComboBox(new String[] {"Ort", "Zeit", "Personen"});
      addComponent(eventTypeCoBo, 0, 1, 2, 1, 0.1, 0.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(0, 10, 0, 0));
      
      eventTypeTF = new JTextField();
      addComponent(eventTypeTF, 2, 1, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(0, 5, 0, 10));
      
      overviewTree = new JTree();
      addComponent(new JScrollPane(overviewTree), 0, 2, 0, 0, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(20, 10, 10, 10));
   }
   
   private void addComponent(
      JComponent component, //einzufügende Komponente
      int gridx, //Position in x-Achse
      int gridy, //Position in y-Achse
      int gridwidth, //Anzahl Zellen für Breite (0 = Breite über alle Zellen in x-Achse)
      int gridheight, //Anzahl Zellen für Höhe (0 = Höhe über alle Zellen in y-Achse)
      double weightx, //Gewichtung in x-Achse
      double weighty, //Gewichtung in y-Achse
      int anchor, //Anker für die Ausrichtung
      int fill, //Füllvariable
      Insets insets ) { //Abstände um die Komponente -> Insets(oben, links, unten, rechts)

      GridBagConstraints gbc = new GridBagConstraints(gridx, gridy, gridwidth, gridheight, weightx, weighty, anchor, fill, insets, 0, 0);
         
      add(component, gbc);
   }

   public static void main(String[] args) {
      try {
         UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
      }
      catch(Exception e) {
         e.printStackTrace();
      }
      new EventFrame("EventFrame").setVisible(true);
   }
}
 
Hey super!!!
danke für die Mühe und die Antwort. Es funktioniert ...
jetzt muss ich mir glaub ich diesen GridBagManager noch in Ruhe anschaun ...
und dann setz ich mich mal damit auseinander, wie ich meinen Tree am Sinnvollsten befüll;
dann kommen noch ein bisschen XML-Parsen und SQL-Abfragen dazu und dann hab ich eh schon einen großen Teil von diesem Fenster (y)

mfg
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben