tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
237
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    squeeez Tutorials.de Gastzugang
    Hi,
    ich habe ein Paar Probleme mit meinen JPanels und ihren LayoutManagern. Mein GUI schaut derzeit so aus: http://www.pictureupload.de/original...01_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
     

  2. #2
    Avatar von zeja
    zeja zeja ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2006
    Beiträge
    2.962
    Lade doch mal dein Bild hier hoch (Der Link funktioniert nicht) und poste den Code ebenso hier in Code Tags: [java]...[/java]
     

  3. #3
    squeeez Tutorials.de Gastzugang
    OK kein Problem
    Mittlerweile hat sich allerdings wieder massig am Code getan und ich glaub da steigt man nicht so einfach durch :/ leider
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    
        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:

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
        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
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken LayoutManager Probleme-projekt.jpg  
     

Ähnliche Themen

  1. Seitenverhältnis beibehalten - LayoutManager
    Von Pasukaru im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 14.01.11, 16:56
  2. Modifizierte JComponent und LayoutManager
    Von SCIPIO-AEMILIANUS im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 5
    Letzter Beitrag: 28.12.10, 19:19
  3. Java Layout und Layoutmanager
    Von swas im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 6
    Letzter Beitrag: 17.08.10, 14:44
  4. LayoutManager und Abstand
    Von kloakenratte im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 07.05.08, 08:47
  5. Layoutmanager?
    Von the_skywalker im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 02.06.05, 10:04