LayoutManager GridLayout, 2 labels nebeneinander

dredav

Aktives Mitglied
Hallo,

ich möchte gerne 2 JLabels neben ein anderer haben, ich versuche es schon eine Weile mit GridLayout aber es klappt einfach nicht, vlt könnt ihr mir helfen 😉

Java:
public class MyWindow {
    private JFrame window;
    private JPanel mainArea;    
    
    private JPanel leftArea;
    private JPanel infoArea;    //infoArea

    private Container contentPane;

    public MyWindow () {
        window = new JFrame("Verwaltung");
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setSize(new Dimension(450, 300));
        
        mainArea = new JPanel();
        mainArea.setLayout(new GridLayout(1, 2));
        
        contentPane = window.getContentPane();

        leftArea = new JPanel();
        leftArea.setLayout(new GridLayout(1, 1));

        infoArea = new JPanel();
        infoArea.setLayout(new GridLayout(10, 2, 5, 5));
         
        
        JLabel title = new JLabel("<html><u>Informationen über den Eintrag</u></html>");
        infoArea.add(title);
        
        
        JLabel fileName = new JLabel("Dateiname: ");
        JLabel fileName2 = new JLabel("Datei");

        infoArea.add(fileName);    //--\
                                           //----Die Zwei sollen neben ein ander sein
        infoArea.add(fileName2);  //--/
        
        [...JLIst...]

        leftArea.add(scrollPane);
        leftArea.setBackground(Color.WHITE);
        leftArea.setSize(new Dimension(175, 264));
 

        mainArea.add(leftArea);
        mainArea.add(infoArea);
        
        contentPane.add(mainArea);    
        
        window.setVisible(true);
    }

    [...]

}

was mache ich falsch?


Grüße und dank
David
 
Zuletzt bearbeitet:
Moin,

sind sie es denn nicht?
Wie sieht denn das Resultat aus?
Poste am Besten mal einen ScreenShot ....

Du kannst zudem mal versuchen, Deine "window" zu verbreitern !

Gruß
Klaus
 
Hallo,

es sieht so aus:
20101008161638.jpg
.

was meinst du mit:
Du kannst zudem mal versuchen, Deine "window" zu verbreitern !

Grüße
David
 
Java:
        infoArea = new JPanel();
        infoArea.setLayout(new GridLayout(10, 2, 5, 5));
         
        JLabel title = new JLabel("<html><u>Informationen über den Eintrag</u></html>");
        infoArea.add(title);
        
        JLabel fileName = new JLabel("Dateiname: ");
        JLabel fileName2 = new JLabel("Datei");
        infoArea.add(fileName);
        infoArea.add(fileName2);

Du erstellst ein GridLayout mit 10 Reihen und 2 Spalten. Jetzt fügst du das erste Label ein, das landet links oben, dann fügst du das zweite ein, das landet rechts daneben und dann fügst du ein drittes ein, das landet links unter dem ersten. Das entspricht weder deinem Screenshot (schau mal was passiert wenn du die Fensterbreite erhöhst), noch dem was du eigentlich erreichen willst.

Wahrscheinlich musst du für dein Layout verschiedene Layoutmanager kombinieren.
 
Also ich würde dafür evtl. einen anderen Layoutmanager nehmen, vor allem weil du ja da noch ein drittes(bzw erstes Label) hinzufügst. Du könntest anstelle von deiner 10 im GridLayout 0 verwenden und dann neben deinem ersten Label noch eine "unsichtbare" Komponente hinzufügen. Aber ich denke du hast dir bei der 10 im GirdLayout gedacht, dass du somit die Labels nach oben bringen kannst, hab ich deinen Gedankengang richtig nachvollzogen?
Mein Vorschlag wäre z.B. so etwas
Java:
          infoArea = new JPanel(new BorderLayout());
          JLabel title = new JLabel("<html><u>Informationen über den Eintrag</u></html>");
          infoArea.add(title,BorderLayout.PAGE_START);
          
          JPanel center = new JPanel(new FlowLayout(FlowLayout.LEFT));
          JLabel fileName = new JLabel("Dateiname: ");
          JLabel fileName2 = new JLabel("Datei");
   
          center.add(fileName);    //--\
                                             //----Die Zwei sollen neben ein ander sein
          center.add(fileName2);  //--/
          infoArea.add(center,BorderLayout.CENTER);
 
Hallo,

muss mich beim Abtippen wohl vertippt haben, auf jedenfalls geht es jetzt. Noch eine Frage, muss ich für jede Zeile ein extra Panel erstellen
Code:
JPanel center = new JPanel(new FlowLayout(FlowLayout.LEFT));

Grüße
David
 

Neue Themen


Zurück
Oben