LayoutManager Probleme

  • Themenstarter Themenstarter squeeez
  • Beginndatum Beginndatum
S

squeeez

Hi,
ich habe ein Paar Probleme mit meinen JPanels und ihren LayoutManagern. Mein GUI schaut derzeit so aus: http://www.pictureupload.de/originals/pictures/160308200401_projekt.jpg

Der Code für die Panels auf der rechten Seite ist dieser hier:
http://phpfi.com/303124

Was ich will ist, dass das JPanel aus der JCompFactory linksbündig angezeigt wird, die Componenten darin aber nicht in der größe geändert werden. Desweiteren sollten die einzelnen Gruppen (Allgemein/Ansicht...) in der Höhe auf ihr minimum gesetzt werden und sollte aufgrund dessen, nicht der ganze Panel ausgefüllt werden, soll unten einfach ein Platzhalter eingefügt werden.

Den Platzhalter kann man wohl via Box.createGlue() hinzufügen, allerdings weiss ich langsam echt nicht mehr wo ich da was hinzufügen/ändern muss damit es dem entspricht, was ich möchte ;) (sitze da nun schon eine Weile vor ;) ).

Squeez
 
Lade doch mal dein Bild hier hoch (Der Link funktioniert nicht) und poste den Code ebenso hier in Code Tags: [code=java]...[/code]
 
OK kein Problem ;)
Mittlerweile hat sich allerdings wieder massig am Code getan und ich glaub da steigt man nicht so einfach durch :/ leider
Java:
    public UserGruppenPanels(int configID, Gruppe gruppe) {
        valueList = LokaleSettingsMap.getLokaleConfig(configID).getConfigList();
        settingList = LokaleSettings.getLokaleDefaultConfig();
        
        untergruppen = gruppe.getUntergruppen();
        grpPanel = new JPanel(new GridLayout(0, 1));
        JPanel panel = addPanels(gruppe, false);
        Box box = Box.createVerticalBox();
        box.add(panel);
        for (Gruppe unterGrp : untergruppen) {
            if (unterGrp.getStatus() == Gruppe.TEIL_GRP) {
                panel = addPanels(unterGrp, true);
                box.add(panel);
            }
        }
        grpPanel.add(box); 
    }

    private JPanel addPanels(Gruppe gruppe, boolean titel) {
        JPanel grpPanel = new JPanel(new FlowLayout()); 
        Box box = Box.createVerticalBox();
        JPanel panel = new JPanel(new FlowLayout());
        String borderTitel = "";
        if (titel) {
            borderTitel = gruppe.getName();
        }
        panel.setBorder(BorderFactory.createTitledBorder(borderTitel));
        //Für jede ConfigSetting aus der Liste soll er dies wiederholen
        HashMap<Integer, JPanel> tmpMap = new HashMap<Integer, JPanel>();
        for (int i = 0; i < settingList.size(); i++) {
            final ConfigSetting setting = settingList.get(i);
            Gruppe tmpGrp = setting.getGruppe();
            if (tmpGrp == gruppe) {
                Object wert = "";
                ConfigValues configValue = null;
                //Die Config muss mind. einen ConfigValue haben ansonsten ist
                //dieser Schritt nicht nötig
                if (!valueList.isEmpty()) {
                    //Für jede ConfigValue aus der ConfigValuesListe der Config,
                    //soll er nun vergleichen ob diese zu einer spezifierten 
                    //ConfigSetting gehört.
                    for (ConfigValues value : valueList) {
                        if (value.getConfigSetting().equals(setting)) {
                            //Die ConfigValue gehört zu dieser ConfigSetting, also
                            //muss dieser Wert genommen werden und nicht der
                            //Standardwert.
                            configValue = value;
                            wert = setting.getWert();
                        } else {
                            wert = setting.getWert();
                        }
                    }
                //Wenn keine ConfigValues vorhanden sind, 
                //werden nur die Standardwerte verwendet.
                } else {
                    wert = setting.getWert();
                }
                //Erstellen der JComponente bezogen auf die ConfigSetting.
                JCompFactory jCompFactory = new JCompFactory(wert, setting);
                final JComps newjComp = jCompFactory.getJComps();
                if (configValue != null) {
                    compSetListe.add(new JCompSetting(newjComp, configValue));
                } else {
                    ConfigValues tmpValue = new ConfigValues(setting.getWert(), setting);
                    compSetListe.add(new JCompSetting(newjComp, tmpValue));
                }
                if (setting.getPosition() == TypInfo.DAVOR) {
                    newjComp.getPanel().add(jCompFactory.getLabel(), "", 0);
                } else {
                    newjComp.getPanel().add(jCompFactory.getLabel(), "");
                }
                JButton reset = new JButton("Zurücksetzen");
                reset.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent event) {
                        newjComp.setValue(setting.getWert());
                    }
                });
                newjComp.getPanel().add(reset, "");
                tmpMap.put(setting.getGrpID(), newjComp.getPanel());
            }       
        }
        if ( !(tmpMap.isEmpty()) ) {
            for (int i = 1; i <= tmpMap.size(); i++) {
                box.add(tmpMap.get(i));
            }
            panel.add(box);
            grpPanel.add(panel);
        }
        return grpPanel;
    }

Dann kommen noch ein paar zwischenschriite und das Panel (newjComp.getPanel())
wird hier erstellt:

Java:
    public JCompZeichenkette(Object value, boolean visible) {
        comp = new JTextField((String) value, TF_LENGTH);
        comp.setName(Typen.ZEICHENKETTE.toString());
        comp.setEnabled(visible);
        JPanel panel = new JPanel(new FlowLayout());
        panel.setName(Typen.ZEICHENKETTE.toString());
        panel.add(comp);
        comp.addActionListener(this);
        comp.addFocusListener(this);
        this.value = value;
        this.panel = panel;
    }


Ich hoffe man steigt einigermaßen durch :/ Ansonsten wäre der alte Code ein wenig übersichtlicher (http://phpfi.com/303124), da sich an den Panels ansich kaum was geändert hat.

Squeez
 

Anhänge

  • projekt.jpg
    projekt.jpg
    33,6 KB · Aufrufe: 22
Zurück