# selectedItem aus einem Methodenerstellten JPanel auslesen.



## Patt1502 (8. Mrz 2018)

```
JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setLayout(new GridLayout(0, 1));
        f.setLocationByPlatform(true);
        f.setVisible(true);
        f.setTitle("Reihenfolge der Spieler");
        JButton OK = new JButton("OK");
       
        f.add(createPlayerSecuence(1));
        f.add(createPlayerSecuence(2));
        f.add(createPlayerSecuence(3));
        f.add(createPlayerSecuence(4));
        f.add(OK);
       
        OK.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                String[] reihenfolgeSpieler = new String[Spieler.getAnzahlSpieler()];
               
                f.dispose();
                createComboKarten();
            }
        });

        f.setSize(350, 300);
    }
   
    private JPanel createPlayerSecuence(int index) {
       
        String[] spieler = Spieler.getSpieler();
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Spieler "+index+": ");
        label.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
        JComboBox jcb = new JComboBox(spieler);
       
        panel.add(label); panel.add(jcb);
       
        return panel;
       
    }
```
Ich habe eine kleine Methode geschrieben, um mir das einfacher zu machen, wenn ich mehr JPanel auf einem Fenster haben möchte. Bei jedem neuen JPanel füge ich eine JComboBox hinzu und möchte, wenn ich dann auf OK drücke, jeweils auslesen, was in der Jeweiligen JComboBox ausgewählt wurde.


----------



## krgewb (8. Mrz 2018)

Dazu sollten sie nicht anonym sein.

```
JPanel panel1 = createPlayerSecuence(1);
f.add(panel1);
```


----------



## Patt1502 (9. Mrz 2018)

Das geht jetzt auch nicht, ich möchte ja auslesen was in der JComboBox ausgewählt wurde. Ich versuche das schon mit panel1.getComponent(1).toString(), dann steht das zwar komisches Zeug in der Konsole:
javax.swing.JComboBox[,160,5,84x25,layout=javax.swing.plaf.metal.MetalComboBoxUI$MetalComboBoxLayoutManager,alignmentX=0.0,alignmentY=0.0,border=,flags=328,maximumSize=,minimumSize=,preferredSize=,isEditable=false,lightWeightPopupEnabled=true,maximumRowCount=8,selectedItemReminder=Computer], aber das letzte selectedItemReminder=Computer, ist das was ich habe möchte, ich weis aber nicht wie ich die Information bekomme. Wenn ich panel1.getComponent(1).getName() mache, bekomme ich nur null.


----------



## Robat (9. Mrz 2018)

Hast du jemals daran gedacht mal in die Doku zu schauen was toString() und getName() eigentlich machen?

Was du eigentlich willst ist die Komponente die getComponent() zurückwirft zu einer JCombobox zu casten und dann mit getSelectedItem() das Element auszulesen.


----------



## krgewb (9. Mrz 2018)

Ich habe eigentlich an so etwas gedacht:

```
panel1.jcb.getSelectedItem();
```


----------



## Patt1502 (9. Mrz 2018)

Ich studiere scintific Computing, deswegen dachte ich eigentlich schon, dass ich weiß was die Methoden machen, nachdem ich das schon gelernt hab, ist aber wohl nicht so. So wie du das Vorgeschlagen hast, hat es funktioniert, also danke ich dafür. Das nächste mal werde ich einfach mehr selber lesen.


----------

