Also mein Problem ist mit JComboBoxen und ActionListeners. Ich werde einen neuen vereinfachten Code erstellen, um das Problem anhand meines ursprünglichen Codes darzustellen. Ich möchte, dass eine JComboBox eine JComboBox hinzufügt, die dann eine dritte JComboBox hinzufügt und so weiter. Jedes Mal, wenn ich auf sie klicke, möchte ich, dass sie den Inhalt ändern, abhängig davon, was die vorherige JComboBox anzeigt.JComboBox fesselt andere JComboBoxen ActionListeners
Mein größtes Problem ist jetzt, dass wenn ich etwas in der ersten "Rennbox" von JComboBox auswähle. Es fügt dem Panel nicht nur "infantrybox" hinzu, es fügt auch alle anderen JComboBoxen hinzu, die ich habe, anstatt sie nur einmal hinzuzufügen, wenn ich etwas in der jeweiligen JComboBox auswähle.
Es ist wie wenn ich etwas in Racebox wähle es beginnt Code von jedem anderen actionPerformed zu lesen.
Eine seltsame Sache ist, dass die JComboBoxen nach dem Hinzufügen von "racebox" rückwärts hinzugefügt werden. Erstens: Racebox Zweitens: infantrynmrbox Drittens: infantrybox
...
public void Attacker(){
racebox = new JComboBox(array);
infantrybox = new JComboBox();
infantrynmrbox = new JComboBox();
panel.add(racebox);
panel.revalidate();
panel.repaint();
racebox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JComboBox cb = (JComboBox)e.getSource();
race = (String)cb.getSelectedItem();
infantrybox.removeAllItems();
for(String s : otherarray){
infantrybox.addItem(s);
}
panel.add(infantrybox);
panel.revalidate();
panel.repaint();
}
});
infantrybox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JComboBox cb = (JComboBox)e.getSource();
infantry = (String)cb.getSelectedItem();
infantrynmrbox.removeAllItems();
for(String s : nmr){
infantrynmrbox.addItem(s);
System.out.println(s + " ");
}
panel.add(infantrynmrbox);
panel.revalidate();
panel.repaint();
}
});
infantrynmrbox.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JComboBox cb = (JComboBox)e.getSource();
infantrynmr = Integer.parseInt((String)cb.getSelectedItem());
}
});
...
}
Vielen Dank für Ihre Antwort. Ein Teil dieses Codes verstehe ich überhaupt nicht. Entschuldigung, mein Code ist ein wenig unklar. Die Boxen werden nur einmal im Originalcode hinzugefügt. Aber das Problem ist, dass sie alle auf einmal hinzugefügt werden. Ich möchte, dass alle hinzugefügt werden, aber nicht alle gleichzeitig. – Richovic
@Richovic, 'Aber das Problem ist, dass sie alle auf einmal hinzugefügt werden. - Fügen Sie den Aktionslistener dem Kombinationsfeld hinzu, nachdem Sie die Daten dem Kombinationsfeld hinzugefügt haben. Wenn Sie mehr Hilfe benötigen, dann veröffentlichen Sie eine ordnungsgemäße [mcve], die das Problem demonstriert. – camickr
Nevermind, ich habe es jetzt. Ich habe das "setModel (new DefaultComboBoxModel());" in gewisser Weise und ich habe es funktioniert. Vielen Dank. – Richovic