Java JCombobox不刷新

Java JCombobox不刷新,java,swing,jcombobox,observable,Java,Swing,Jcombobox,Observable,嗨,我有两个类Banque和Succursale,银行有一个Succursale列表,每次列表更改时,我都希望Succursale获取它,然后使用它刷新其视图的JCombobox,问题是JCombobox在其项目计数递增时不刷新,下面是该类 import java.io.IOException; import java.net.ServerSocket; import java.util.ArrayList; import java.util.Iterator; import java.util

嗨,我有两个类Banque和Succursale,银行有一个Succursale列表,每次列表更改时,我都希望Succursale获取它,然后使用它刷新其视图的JCombobox,问题是JCombobox在其项目计数递增时不刷新,下面是该类

import java.io.IOException;
import java.net.ServerSocket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Observable;


public class Banque extends Observable {
private List<Succursale> listSucc = new ArrayList<Succursale>();
private int sommeTotale;
private int nbSuccInit = 4;

public void ajouteSucc(Succursale suc){

}
public Banque(){
    initialiserServeur();       
}
private void initialiserServeur() {
    ServerSocket serverSocket = null; 
    try { 
        serverSocket = new ServerSocket(10118); 
    } 
    catch (IOException e) 
    { 
        System.err.println("On ne peut pas ecouter au  port: 10118."); 
        System.exit(1); 
    }
    System.out.println ("Le serveur est en marche, Attente de la connexion.....");
    int i = 0;
    while(i<5){
        try {
            UtilMultiTh mt = new UtilMultiTh(serverSocket.accept());
            Thread t = new Thread(mt);
            t.start();
            t.join();
            Succursale s = mt.getSuc();
            listSucc.add(s);
            this.addObserver(s);
            this.setChanged();
            this.notifyObservers(this.listSucc);

            //System.out.println(listSucc.size());

           /* for(int j =0; j<listSucc.size();j++){
                System.out.println("La succursale "+(j+1)+" est:"+listSucc.get(j).getName());
            }
            i++;
            System.out.println("FLAGPOSTban");*/
        } 
        catch (IOException | InterruptedException e) 
        { 
            System.err.println("Accept a echoue."); 
            System.exit(1); 
        } 
    }


    System.out.println ("connexion reussie");
    System.out.println ("Attente de l'entree.....");

}

public static void main (String [] args){
    Banque banK = new Banque();
}
}
import java.io.IOException;
导入java.net.ServerSocket;
导入java.util.ArrayList;
导入java.util.Iterator;
导入java.util.List;
导入java.util.Observable;
可观察的公共类银行{
private List listSucc=new ArrayList();
私人故事;
私有int-nbit=4;
公共无效成功(成功成功){
}
公共银行(){
初始化器serveur();
}
私有void initialiserServeur(){
ServerSocket ServerSocket=null;
试试{
serverSocket=新的serverSocket(10118);
} 
捕获(IOE异常)
{ 
System.err.println(“在ne peut pas ecouter au port:10118上”);
系统出口(1);
}
System.out.println(“Le serveur est en marche,Attentite de la connexion…”);
int i=0;

当我在combobox中使用哪个模型时??sysout工作正常?调用重新验证,将调用包装在
SwingUtilities.invokeLater()
我没有使用模型,我直接使用JComboBox尝试在
setListSucc()
方法中使用
ListSucc.setModel(新的DefaultComboxModel(ListSucc));
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
import java.util.Observer;

import javax.swing.ComboBoxModel;


public class Succursale implements Serializable, Observer {
private String coordonnees;
private String name;
private int sommeDepart;
private int sommeRecue;
private int sommeEnvoyee;
private List<Succursale> listSuccAc = new ArrayList<Succursale>();
private GuiSuccursale succView;

public Succursale (){
    succView = new GuiSuccursale(Constantes.sommeDepart,1);
    this.sommeDepart=Constantes.sommeDepart;
    this.name="Succursale: "+(1);
    connexionBanque();
}
public void connexionBanque(){
    String host = Constantes.adrBanque[0];
    int port = Constantes.portBanque[0];
    Socket echoSocket = null;
    try {
        echoSocket = new Socket(host, port);
        ObjectOutputStream oos = new ObjectOutputStream(echoSocket.getOutputStream());
        oos.writeObject(this);
        //System.out.println("FLAGPOSTSUcc");
    } catch (UnknownHostException e) {
        System.err.println("Hôte inconnu: " + host);
        System.exit(1);
    } catch (IOException e) {
        e.printStackTrace();
        System.err.println("Ne pas se connecter au serveur: " + host);
        System.exit(1);
    }
}
public void connexionSuccursales(){

}
public void envoiManuel(){

}
public String getName() {
    return name;
}
public void envoiPeriodique(){

}
public static void main (String[] args){
    Succursale suc = new Succursale();
}
@Override
public void update(Observable arg0, Object arg1) {
    this.listSuccAc= (List)arg1;
    this.succView.setListeSucc(listSuccAc);
    //this.succView.validate();
    //System.out.println("Mes succ connectees sont:"+this.listSuccAc.size());
    //System.out.println("Mes succ connectees sont:"+this.getName());

}
}
import java.awt.Font;
import java.awt.GridLayout;
import java.util.List;

import javax.swing.ComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class GuiSuccursale extends JFrame{

private JLabel labelSum = new JLabel("Montant:");
private JIntField champMontant = new JIntField(0, 0, Integer.MAX_VALUE);
private JLabel labelSumDispo = new JLabel ("Somme Disponible");
private JIntField champSumDispo;
private JLabel labelSucc = new JLabel("Vers la Succursale:");
private ComboBoxModel cbm;
private JComboBox listeSucc = new JComboBox<>();
private JPanel pan = new JPanel();
private JButton btnTransferer = new JButton("Transferer");
private JButton btnEffacer = new JButton("Effacer");
public  GuiSuccursale(int sumDepart, int num){
    init(sumDepart, num);
}
public void init(int sumDepart, int num){

    GridLayout gl = new GridLayout();
    gl.setColumns(2);
    gl.setRows(4);
    gl.setHgap(5);
    gl.setVgap(5);
    pan.setLayout(gl);

    labelSumDispo.setHorizontalAlignment(JLabel.CENTER);
    labelSumDispo.setFont(new Font("Tahoma", Font.BOLD, 11));

    champSumDispo = new JIntField(sumDepart, 0, Integer.MAX_VALUE);
    champSumDispo.setEditable(false);

    labelSucc.setHorizontalAlignment(JLabel.CENTER);
    labelSucc.setFont(new Font("Tahoma", Font.BOLD, 11));

    labelSum.setHorizontalAlignment(JLabel.CENTER);
    labelSum.setFont(new Font("Tahoma", Font.BOLD, 11));


    pan.add(labelSumDispo);
    pan.add(champSumDispo);
    pan.add(labelSucc);
    pan.add(listeSucc);
    pan.add(labelSum);
    pan.add(champMontant);
    pan.add(btnTransferer);
    pan.add(btnEffacer);

    this.setContentPane(pan);
    this.setSize(300, 150);
    this.setTitle("Succursale: "+num);
    this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    this.setLocationRelativeTo(null);
    this.setResizable(true);
    this.setVisible(true);
}
public JComboBox getListeSucc() {
    return listeSucc;
}
public void setListeSucc(List<Succursale> listeSucc) {
    this.listeSucc.removeAllItems();
    for(int i = 0; i<listeSucc.size();i++){
        System.out.println("l<index est:"+i);

        this.listeSucc.addItem(listeSucc.get(i).getName());
        System.out.println(this.listeSucc.getItemCount());
    }
}

}