Problem bei Anordnung von GUI-Componenten



  • Grüße,

    ich habe ein Problem beim Anordnen von GUI-Componenten.

    Erstmal mein Code:

    private JPanel getCenter()
      {
        JPanel ret = new JPanel();
    
        ret.setLayout(new BorderLayout());
    
        JPanel daten = new JPanel();
    
        GridBagLayout layout = new GridBagLayout();
        daten.setLayout(layout);
    
        GridBagConstraints c = new GridBagConstraints();
        c.fill = GridBagConstraints.HORIZONTAL;
        c.gridwidth = GridBagConstraints.REMAINDER;
        c.weightx = 1.0;
        c.insets = new Insets(2, 4, 2, 4);
    
        // Erzeugt für jeden Datensatz ein JPanel und fügt das hinzu
        for (Data d : data.getData())
        {
          Panel p = new Panel(d);
          layout.setConstraints(p, c);
          ferts.add(p);
        }
    
        JScrollPane sp = new JScrollPane(daten);
        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        ret.add(sp, BorderLayout.CENTER);
    
        return ret;
      }
    

    Dieser Code soll für jedes Datum ein JPanel in die ScrollPane einfügen, das funktioniert auch soweit ganz gut. Das Problem, was ich jetzt habe, ist, das die JPanels in der Mitte der JScrollPane angezeigt werden - ich hätte es jedoch gerne, das die oben bündig sind.

    Versuche mit GridBagConstraints.anchor = NORTH, ... führten irgendwie nicht zu dem gewünschten Ergebnis.

    PS: Wenn ich weighty (von GridBagConstraints) auf einen anderen Wert setze, dann wird die erste Component zwar oben bündig angezeigt, aber die Components werden unschön gestreckt ...



  • Füge ein leeres Panel am Ende hinzu, welches gestreckt werden kann.
    Irgendetwas muss nunmal gestreckt werden, wenn der Bereich zu groß ist.

    Brauchst du denn unbedingt für jeden Datensatz ein Panel?



  • Danke, das hat die gewünschte Wirkung erzielt:

    JPanel push = new JPanel();
        c.weighty = 1.0;
        layout.setConstraints(push, c);
        ferts.add(push);
    

    Ja, ich hätte gerne für jedes Datum ein JPanel da dort mehrere Werte, ... angezeigt werden sollen.


Anmelden zum Antworten