# JCombobox inhalt löschen



## hans-sonny (19. Jun 2012)

hi leute,

ich hab ein array und eine jcombobox

in der combobox werden alle elemente des arrays angezeigt ... 

nun möcht ich bei klick auf einen button alle elemente gelöscht werden, und dann die combobox mit neuem inhalt geflüllt wird, also dem array wird ein neues element hinzugefügt und dann soll die combobox neu bestückt werden weil der inhlat des arrays in richtiger reihenfolge angezeigt werden soll


was nicht klappt ist das löschen ... 



```
public void cardsOut(final int p) {
        userCards.removeAllItems();
        for (int i = 0; i < this.newGuigame.getPlayers().get(p).getSize(); i++) {
            // Gets all Player Cards
            unocards.Card card = this.newGuigame.getPlayers().get(p).showCard(i);
            String color = unocards.TransformCard.transformColor(card);
            String value = unocards.TransformCard.transformValue(card);
            String output = color + "  --> " + value;
            userCards.addItem(output);
        }
    }
```

das ist meine methode

wo ist hier der hund begraben?


----------



## bERt0r (19. Jun 2012)

Da du ja keinen Layoutmanager verwendest merkt die Combobox wohl nicht, dass sich der Inhalt geändert hat und zeigt noch immer die alten Items an.


----------



## Gast2 (19. Jun 2012)

Das liegt wohl weniger am layoutmanager als am Model der combobox. Welches benutzt du? Ist das auch die richtige Referenz auf der du die Methoden aufrufst?


----------



## hans-sonny (19. Jun 2012)

die combobox hat kein model ....


----------



## Harry Kane (19. Jun 2012)

hans-sonny hat gesagt.:


> die combobox hat kein model ....


Doch, hat sie. Wenn Du selbst kein ComboBoxModel anlegst, macht das die JComboBox für Dich.

Aus den Methodensignaturen
userCards.removeAllItems(); und
userCards.addItem(output);

kann man schliessen, das userCards keine Instanz von java.util.List ist und auch nicht von ComboBoxModel, und von Array schon mal gar nicht, sondern eine Instanz von JComboBox. Frage ist, wo deinem Array tatsächlich ein neues Element hinzugefügt wird (in deinem Codeschnipsel jedenfalls nicht) und wie die JComboBox die Änderung des Arrays bemerken soll.
Ohne etwas mehr Code können wir wohl nur rumraten.


----------



## hans-sonny (19. Jun 2012)

das hinzufügen einer neuen carte in die array liste passiert an anderer stelle, das funktioniert aber 100%tig 

habe zuerst mein spiel als consolen anwendung entwickelt und erweitere es nun um eine gui



in dem von mir geposteten codeschnipsel geht es nur um die aktualisieurng der elemente in der combobox

also cih möchte jedesmal wenn die methode aufgerufen wird dass zunächst alle elemente in der combobox gelöcsht werden ...

das versuche ich mit: userCards.removeAllItems();

und dann soll sie mit der forschleife wieder gefüllt werden ... das macht sie aber leider nicht in der richtigen reihenfolge


----------



## mla.rue (19. Jun 2012)

Wenn ich die ganze Sache richtig verstehe, hat die ComboBox ein DefaultComboBoxModel, weshalb einem die ganzen Methoden zur Verfügung stehen, nur nützt es nichts, man muss schon ein eigenes Model haben.

über myCbxModel.removeAllElements() kann man dann löschen und myCbxModel.addElement() ans Ende der Liste zufügen

btw wer suchen kann, ist klar im Vorteil, dieses Thema wurde in den letzten 3 Wochen hier im FOrum in 2 verschiedenen Threads behandelt (und beidemale gelöst)


----------



## hans-sonny (19. Jun 2012)

ja könntest du mir einen dieser threads verlinken?


----------



## mla.rue (19. Jun 2012)

http://www.java-forum.org/awt-swing-swt/137170-jcombobox-arraylist-fuellen.html

etwas älter:
http://www.java-forum.org/awt-swing-swt/136265-inhalt-jcombobox-aktualisieren.html


----------



## hans-sonny (19. Jun 2012)

danke aber die sind nicht gerade sooo  zielführend ... es ist immer noch nicht ganz klar wie ich das machen soll..

brauch ich eine combobox model? wenn ja welches und wie? ein beispiel wäre geil


----------



## mla.rue (19. Jun 2012)

du musst ein ComboboxModel machen halt


```
DefaultComboBoxModel cbxModel = new DefaultComboBoxModel();

cbxTest = new javax.swing.JComboBox();

cbxTest.setModel(cbxModel);

//blabla

cbxModel.removeAllElements();

cbxModel.addElement("blub");

//oder das hier wenn dir z.b. eine Schleife für addElement sparen willst
cbxModel = new DefaultComboBoxModel(strMyArray);
```


----------



## bERt0r (19. Jun 2012)

Ich glaub eher da stimmt was bei deiner Spiellogik nicht zusammen. Der Code unten führt jedenfalls zum gewünschten Ergebnis. Es wäre da mal interessant wo du diese Funktion ausführst. Höchstwahrscheinlich nicht auf dem EDT und das ist bei remove Operationen immer kritisch. Eventuell hilft es schon, das ganze in ein invokeLater(...) zu packen.

```
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

public class NullCombo extends JFrame
{
	
	private JPanel contentPane;
	private JComboBox comboBox;
	private JButton btnLschen;
	
	public static void main(String[] args)
	{
		EventQueue.invokeLater(new Runnable()
			{
				public void run()
				{
					try
					{
						NullCombo frame = new NullCombo();
						frame.setVisible(true);
					} catch (Exception e)
					{
						e.printStackTrace();
					}
				}
			});
	}
	
	public NullCombo()
	{
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		comboBox = new JComboBox();
		comboBox.setModel(new DefaultComboBoxModel(new String[] { "Eins", "Zwei", "Drei" }));
		comboBox.setBounds(59, 78, 132, 20);
		contentPane.add(comboBox);
		
		btnLschen = new JButton("L\u00F6schen");
		btnLschen.addActionListener(new ActionListener()
			{
				public void actionPerformed(ActionEvent e)
				{
					comboBox.removeAllItems();
					comboBox.addItem("Vier");
				}
			});
		btnLschen.setBounds(245, 77, 89, 23);
		contentPane.add(btnLschen);
	}
}
```


----------



## hans-sonny (19. Jun 2012)

habs so gemacht, aber das verhalten ändert sich nicht 

angenommen ich hab die elemente

1
2
3

in der kombobox ... und klicke auf neues element hinzufügen 

hab ich 
4
1
2
3


wenn ich dann nochmal ein element hinzufüge
4
1
2
3
5


.... irgendwie klappt das noch nicht wirklich ... 



hier mal meine ganze gui

```
package unogui;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import playlogic.Playlogic;

/**
 * this class defines the uno gui
 *
 * @author Holz
 */
public class Unogui extends JFrame implements ActionListener {
    //Playlogic

    private Playlogic newGuigame;
    //Gui Elements
    //Menu
    private JMenuBar menu = new JMenuBar();
    private JMenu menu1 = new JMenu("Game");
    private JMenu menu2 = new JMenu("Help");
    private JMenuItem item1 = new JMenuItem("Start game");
    private JMenuItem item2 = new JMenuItem("Exit game");
    private JMenuItem item3 = new JMenuItem("Display Rules");
    private JMenuItem item4 = new JMenuItem("About");
    //Players name
    private JLabel playersName = new JLabel(" ");
    private JButton deckButton;
    //Panels
    private JPanel middle = new JPanel();
    private JPanel leftpanel = new JPanel();
    private JPanel centerpanel = new JPanel();
    private JPanel rightpanel = new JPanel();
    private JPanel bottom = new JPanel();
    private JPanel top = new JPanel();
    //Card choose box
    private JComboBox userCards = new JComboBox();
    DefaultComboBoxModel cbxModel = new DefaultComboBoxModel();

    //GRIDS
    private static final int GRIDMAGIC_H = 6;
    private static final int GRIDMAGIC_W = 3;
    private GridLayout grid = new GridLayout(GRIDMAGIC_H, 0);
    private GridLayout grida = new GridLayout(0, GRIDMAGIC_W);
    private GridLayout gridb = new GridLayout(2, 0);
    //Dimension
    private static final int UNOWIDTH = 1024;
    private static final int UNOHEIGHT = 720;
    private static final int MENUHEIGHT = 25;
    private static final int MIDDLEHEIGHT = 695;
    private static final int RIGHTHEIGHT = 200;
    private static final int COLORPANELWIDTH = 150;
    private static final int COLORPANELHEIGHT = 20;
    private static final int LEFTWIDTH = 150;
    private static final int CENTERWIDTH = 350;
    private static final int RIGHTWIDTH = 300;
    private static final int FIFTY = 50;
    //Fontsize for welcome label
    private static final int FONTSIZE = 24;
    private static final int FONTSIZENAME = 18;
    //Magic number corrections
    private static final int ZERO = 0;
    private static final int ONE = 1;
    private static final int TWO = 2;
    private static final int THREE = 3;
    private static final int FOUR = 4;

    /**
     * New game will be started
     *
     * @return new Game
     */
    public Playlogic getPlaylogic() {
        return newGuigame;
    }

    /**
     * Initialisation of Gui-Plaaygorund
     */
    public Unogui() {
        /*
         * ---------------------------------------------------------------------
         * Bild pfade
         * ---------------------------------------------------------------------
         */
        final String playground = "/unoimagesnew/hintergrund_spielflaeche.jpg";
        /*
         * ---------------------------------------------------------------------
         * Uno Spielfläche anlegen --> Jframe
         * ---------------------------------------------------------------------
         */
        // Window Title
        this.setTitle("UNO");
        // Exit Button
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // Window size
        this.setPreferredSize(new Dimension(UNOWIDTH, UNOHEIGHT));
        // not resizeable
        this.setResizable(false);

        /*
         * ----------------------------------------------------------------------
         * Window Menu Bar
         * -------------------------------------------------------------------
         */
        this.menu.setOpaque(true);
        this.menu.setPreferredSize(new Dimension(UNOWIDTH, MENUHEIGHT));

        /*
         * ----------------------------------------------------------------------
         * Menu1
         * -------------------------------------------------------------------
         */
        // add Menu to Menubar
        this.menu.add(this.menu1);

        // add Submenus to Menu 1
        this.menu1.add(this.item1);
        this.menu1.add(this.item2);

        /*
         * ----------------------------------------------------------------------
         * Menu2
         * -------------------------------------------------------------------
         */
        // add Menu to Menubar
        this.menu.add(this.menu2);

        // SubItem 1
        this.item1.addActionListener(this);
        // SubItem 2
        this.item2.addActionListener(this);
        // SubItem 3
        this.item3.addActionListener(this);
        // SubItem 5
        this.item4.addActionListener(this);

        // add Submenus to Menu 1
        this.menu2.add(this.item3);
        this.menu2.add(this.item4);

        /*
         * ----------------------------------------------------------------------
         * Load Background image
         * -------------------------------------------------------------------
         */
        this.setContentPane(new Backgroundpanel(playground));
        /*
         * ----------------------------------------------------------------------
         * Border Layout middle = whole panel in the middle --> will be split
         * into 3 panels
         * -------------------------------------------------------------------
         */
        // size
        this.middle.setPreferredSize(new Dimension(UNOWIDTH, MIDDLEHEIGHT));
        // transparency for all panels
        this.middle.setOpaque(false);
        this.leftpanel.setOpaque(false);
        this.centerpanel.setOpaque(false);
        this.rightpanel.setOpaque(false);
        this.top.setOpaque(false);
        this.bottom.setOpaque(false);

        // middle panel add to JFrame
        this.add(this.middle);

        // add Panels to middle --> middle border Layout
        this.middle.setLayout(gridb);
        this.middle.add(top);
        this.top.setLayout(grida);
        this.middle.add(bottom);
        this.top.add(this.leftpanel);
        this.top.add(this.centerpanel);
        this.top.add(this.rightpanel);

        this.userCards.setPreferredSize(new Dimension(RIGHTWIDTH, FONTSIZE));
        //Rightpanel
        this.rightpanel.setLayout(grid);
        this.rightpanel.add(playersName);

        // add colorPanel on leftpanel
        this.leftpanel.setPreferredSize(new Dimension(LEFTWIDTH, MIDDLEHEIGHT));
        this.centerpanel.setPreferredSize(new Dimension(CENTERWIDTH, MIDDLEHEIGHT));
        this.rightpanel.setPreferredSize(new Dimension(RIGHTWIDTH, RIGHTHEIGHT));
        this.userCards.setPreferredSize(new Dimension(COLORPANELWIDTH, COLORPANELHEIGHT));
        userCards.setModel(cbxModel);
        /*
         * ----------------------------------------------------------------------
         * actual Color on top of deck
         * -------------------------------------------------------------------
         */

        // Jlabel added to Window
        this.setJMenuBar(this.menu);
        this.setLayout(new FlowLayout());


        this.pack();
        Center.centerOnScreen(this);
        this.setVisible(true);

        //Show Welcome Panel
        JOptionPane.showMessageDialog(this, "Welcome to UNO", "Welcome", JOptionPane.INFORMATION_MESSAGE);
    }
    /*
     * --------------------------------------------------------------------------
     * Action Listener
     * ------------------------------------------------------------------------
     */

    @Override
    public void actionPerformed(final ActionEvent e) {
        /*
         * ----------------------------------------------------------------------
         * Exit Game
         * ----------------------------------------------------------------------
         */
        if (e.getSource().equals(this.item2)) {
            final int n = JOptionPane.showConfirmDialog(this, "Do you realy want to Exit the game?", "Exit game", JOptionPane.YES_NO_OPTION);

            if (n == JOptionPane.YES_OPTION) {
                System.exit(0);
            }
        }
        /*
         * ----------------------------------------------------------------------
         * Start new Game
         * ----------------------------------------------------------------------
         */
        if (e.getSource().equals(this.item1)) {
            //Get Players Name
            String name = JOptionPane.showInputDialog(null, "Enter your Name: ");
            playlogic.Global_vars.setName(name);
            playersName.setText(playlogic.Global_vars.getName() + "'s deck");
            playersName.setFont(new Font("Serif", Font.BOLD, FONTSIZENAME));
            playersName.setForeground(Color.WHITE);

            //Add Panels
            this.rightpanel.add(this.userCards);

            final int start = JOptionPane.showConfirmDialog(this, "Do you want to start a new game?", "Start game", JOptionPane.YES_NO_OPTION);

            if (start == JOptionPane.YES_OPTION) {
                //add deck to Playground
                String uri = "/unoimagesnew/deck.png";
                
                //Deck Button --> for User to get new Cards
                deckButton = new JButton(" ", createImageIcon(uri));
                leftpanel.add(deckButton);
                deckButton.setActionCommand("newCard");
                deckButton.addActionListener(this);
                deckButton.setOpaque(false);
                deckButton.setContentAreaFilled(false);

                // Start game
                this.newGuigame = new playlogic.Playlogic();
                // Color of top Card
                final unocards.Card card = this.newGuigame.getUsed().showCard(0);
                guiPlay(card);
            }
        }

        /*
         * ----------------------------------------------------------------------
         * About dialog
         * ----------------------------------------------------------------------
         */
        if (e.getSource().equals(this.item4)) {
            double version = playlogic.Global_vars.getVersion();
            String string = "Copyright Felix Hohlwegler & Duy Nguyen " + "Version: " + version;
            JOptionPane.showMessageDialog(this, string, "About", JOptionPane.INFORMATION_MESSAGE);
        }

        /*
         * ----------------------------------------------------------------------
         * New Card
         * ----------------------------------------------------------------------
         */
        if ("newCard".endsWith(e.getActionCommand())) {
            this.newGuigame.newCard(this.newGuigame.getOrder());
            this.cardsOut(this.newGuigame.getOrder());
        }

    }

    /**
     * Gui Play sets the playing order
     *
     * @param card
     */
    public void guiPlay(unocards.Card card) {

        this.setColorPanel(card);
        //Centerpanel
        //Humans Turn
        if (this.newGuigame.getOrder() == 0) {
            //Users Cards Reload
            cardsOut(this.newGuigame.getOrder());
            //TopCard Output
            this.setColorPanel(this.newGuigame.getUsed().showCard(0));
            //Set ComputersTurn
            this.newGuigame.setOrder(1);
        } else {
            //Computers TURN
            this.newGuigame.computersTURN(this.newGuigame.getOrder());
            //Top Card Output
            this.setColorPanel(this.newGuigame.getUsed().showCard(0));
            //Set PlayersTurn 
            this.newGuigame.setOrder(0);
        }
    }

    /**
     * Human Players cards should be added to dropdown list
     *
     * @param p players number
     */
    public void cardsOut(final int p) {

        cbxModel.removeAllElements();
        for (int i = 0; i < this.newGuigame.getPlayers().get(p).getSize(); i++) {
            // Gets all Player Cards
            unocards.Card card = this.newGuigame.getPlayers().get(p).showCard(i);
            String color = unocards.TransformCard.transformColor(card);
            String value = unocards.TransformCard.transformValue(card);
            String output = color + "  --> " + value;
            cbxModel.addElement(output);
        }
    }

    /**
     * Color Panel shows the top cards color
     *
     * @param card
     */
    public void setColorPanel(final unocards.Card card) {
        ImageIcon image;
        switch (card.getColor()) {
            case ZERO:
                final String red = "/unoimagesnew/rot.png";
                image = createImageIcon(red);
                setCard(card, image);
                break;
            case ONE:
                final String green = "/unoimagesnew/gruen.png";
                image = createImageIcon(green);
                setCard(card, image);
                break;
            case TWO:
                final String blue = "/unoimagesnew/blau.png";
                image = createImageIcon(blue);
                setCard(card, image);
                break;
            case THREE:
                final String yellow = "/unoimagesnew/gelb.png";
                image = createImageIcon(yellow);
                setCard(card, image);
                break;
            case FOUR:
                final String black = "/unoimagesnew/schwarz.png";
                image = createImageIcon(black);
                setCard(card, image);
                break;
        }
    }
     /**
     * Color Panel shows the top cards color
     *
     * @param card chosen Card
     * @param image set image for card color
     */
    private void setCard(unocards.Card card, ImageIcon image) {
        //Card label
        JLabel cardLabel;
        //Panel clean
        centerpanel.removeAll();
        //Add Uno Card
        cardLabel = new JLabel(image);
        //Add Label to Panel
        this.centerpanel.add(cardLabel);
        //Set location
        cardLabel.setLocation(0, FIFTY);
        //Set Text
        cardLabel.setText(unocards.TransformCard.transformValue(card));
    }

    /**
     * Creates images
     * @param path file Path (ImagePath)
     * @return new Image
     */
    protected ImageIcon createImageIcon(final String path) {
        final java.net.URL imgURL = getClass().getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL);
        } else {
            System.err.println("Couldn't find file: " + path);
            return null;
        }
    }
}
```


----------



## mla.rue (19. Jun 2012)

solltest dir ersteinmaml eine Testklasse zulegen wo du nur das mit der ComboBox übst, bevor der ganze Rest dazukommt. Soweit ich sehen kann ist alles richtig, funktionieren sollte es. 

Wenn die 4 zuerst kommt, ist wohl irgendwo ein Fehler in der Abfolge den ich so ersteinmal in dem Code nicht finde. Evtl löschst du alles, fügst 4 hinzu und dann 1-3

Mal schnell zusammengeklatscht (möchte dazu nicht wirklich was hören )... aber obs dir hilft...

```
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;

import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;


@SuppressWarnings("serial")
public class DemoComboBox extends javax.swing.JFrame {
	
	String[] strListe = { "Strahlentherapie", "Computertomographie", "Diagnostik", "konv. Röntgen", "Nuklear",
			"Magnet Resonanz Tomographie", "EEG", "Sonographie", "Knochendichtenmessung", "Mammographie" };
	private JPanel panel;
	private JComboBox<String> cbxBox; 
	private DefaultComboBoxModel<String> cbxMyModel; 
	private JButton btnFill;
	private JButton btnRemoveAll;
	private JButton btnAddAllElements;
	private JButton btnAddElement;
	
	public DemoComboBox() {
		initComponents();
	}

	private void initComponents() {

		panel = new JPanel(new FlowLayout());
		cbxBox = new JComboBox<String>();
		cbxMyModel = new DefaultComboBoxModel<String>(new String[] {"1", "2", "3"});
		cbxBox.setModel(cbxMyModel);
		
		btnFill = new JButton();
		btnFill.setText("Fill");
		btnFill.addActionListener(new java.awt.event.ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    	btnFillActionPerformed(evt);
		    }
		});
		
		btnRemoveAll = new JButton();
		btnRemoveAll.setText("RemoveAll");
		btnRemoveAll.addActionListener(new java.awt.event.ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    	btnRemoveAllActionPerformed(evt);
		    }
		});
		
		btnAddAllElements = new JButton();
		btnAddAllElements.setText("AddAllElements");
		btnAddAllElements.addActionListener(new java.awt.event.ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    	btnAddAllElementsActionPerformed(evt);
		    }
		});
		
		btnAddElement = new JButton();
		btnAddElement.setText("AddElement");
		btnAddElement.addActionListener(new java.awt.event.ActionListener() {
		    public void actionPerformed(java.awt.event.ActionEvent evt) {
		    	btnAddElementActionPerformed(evt);
		    }
		});
		
		panel.add(cbxBox);
		panel.add(btnFill);
		panel.add(btnRemoveAll);
		panel.add(btnAddAllElements);
		panel.add(btnAddElement);
		
		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("DemoComboBox");
        setSize(500,100);
        setLocationByPlatform(true);
        setResizable(false);
        getContentPane().add(panel);
	}
	
	private void btnFillActionPerformed(ActionEvent evt){
		cbxMyModel = new DefaultComboBoxModel<String>(strListe);
		cbxBox.setModel(cbxMyModel);
	}
	
	private void btnRemoveAllActionPerformed(ActionEvent evt){
		cbxMyModel.removeAllElements();
	}
	
	private void btnAddAllElementsActionPerformed(ActionEvent evt){
		for(int i = 0; i< strListe.length; i++){
			cbxMyModel.addElement(strListe[i]);
		}
	}
	
	private void btnAddElementActionPerformed(ActionEvent evt){
		cbxMyModel.addElement("neu");
	}
}
```


----------



## bERt0r (19. Jun 2012)

Ich gebs auf, du wirst erstmal an deinem Programm verzweifeln müssen bevor dus einsiehst dass sauber Code-Stil eben doch wichtig ist und man beim Testen eben nicht immer das ganze Programm, sondern nur den Teil der nicht funktioniert testet. Je mehr dir hier im Forum geholfen wird, umso später siehst dus ein glaub ich. Ich werde schließlich nicht bezahlt dafür mich durch deinen Code zu wursteln und Fehler zu finden, die du mit "klappt nicht" beschreibst.


----------



## hans-sonny (19. Jun 2012)

ich hab doch genau beschrieben wos klemmt .....


----------



## hans-sonny (19. Jun 2012)

fragt nicht wieso ich weiß es nicht aber jetzt geht es 

.....


----------



## Harry Kane (19. Jun 2012)

hans-sonny hat gesagt.:


> ich hab doch genau beschrieben wos klemmt .....



Um das von dir beschriebene Verhalten nachvollziehen zu können, muss jemand dein Programm kompilieren und starten können. Dies geht zur Zeit nicht, da dazu die Klassen playlogic.Playlogic und unocards.Card und eventuell noch ein paar weitere notwendig sind.
Um ohne lauffähiges Programm deine werten Ausführungen nachvollziehen zu können, müsstest du uns zumindest sagen, welche Methode welcher Klasse bei Klick auf "neues Element hinzufügen" aufgerufen wirst.
Ein Hinweis zum Schluss: in deiner cardsOut-Methode aus deinem ersten Post befüllst du deine JComboBox mit den Dingen, die aus this.newGuigame.getPlayers().get(p) rauskommen. Offenbar hängt an diesem Objekt so etwas wie eine Liste von Karten, deren Reihenfolge die Reihenfolge in der JComboBox definiert. Leider entzieht sich komplett unserer Kontrolle, was denn in welcher Reihenfolge in this.newGuigame.getPlayers().get(p) drin stecket, oder wie es überhaupt da rein gekommen ist.
Wie soll man da effektiv auf Fehlersuche gehen?


----------

