在GUI中向comboBox添加数据

时间:2014-07-22 15:29:16

标签: java user-interface combobox

我尝试使用一些数据填充服务器GUI中的comboBox。具体来说,我想添加注册到服务器的客户端的ID。 我必须实现它是错误的,因为在gui的initialize()方法之后的更改不适用。

我在这里复制所涉及的代码:

在服务器中:

public class Server implements ServerInterface {

    private static List<ClientInterface> clients;
    static ServerGui gui;
public Server() throws RemoteException
    {
        super();
        clients = new ArrayList<ClientInterface>( );
        gui = new ServerGui();
    }
*.... other methods not involved ....*
public static void main(String[] args) 
    {

        try {
            Server statsServer = new Server();
            ServerInterface stub = (ServerInterface) UnicastRemoteObject.exportObject(statsServer, 1099);

            Registry r=LocateRegistry.createRegistry(1099);
            r.rebind("aaa", stub);
            System.out.println("Server ready");
            //gui.fullCombobox(clients);
            gui.main(null);
        }
        /* If any communication failures occur... */
        catch (RemoteException e) {
            System.out.println("Communication error " + e.toString());
        }
    }
}

在GUI中

import java.awt.EventQueue;


public class ServerGui {

    private JFrame frame;
    public JComboBox<String> comboBox;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    ServerGui window = new ServerGui();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public ServerGui() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */

    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 725, 487);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        comboBox = new JComboBox();
        comboBox.addItem("ciao");
        comboBox.addItem("miao");
        comboBox.setBounds(162, 113, 182, 38);
        frame.getContentPane().add(comboBox);

    }

    public void fullCombobox(List <ClientInterface> lista) throws RemoteException
    {
        Iterator<ClientInterface> it= lista.iterator();
        while(it.hasNext())
        {
            ClientInterface c = ( ClientInterface ) it.next();
            Integer i = c.getId();
            comboBox.addItem(i.toString());
        }
    }
}

当我通过Client调用Server方法时,我在其末尾调用fullComboBox方法。我认为组合框会自动重新加载,但它根本没有变化。

似乎我在initialize()方法之后所做的一切都不起作用。

我该如何解决? 我是否按照正确的方式为服务器执行gui操作?我有一些疑问,如果将gui对象放入服务器(就像我做的那样)或将服务器放在gui中。我真的很困惑。

提前感谢所有人。

1 个答案:

答案 0 :(得分:0)

从很快检查您的代码,您似乎甚至没有调用方法

 public void fullCombobox(List<ClientInterface> lista) throws RemoteException {}

您忘记在代码中显示调用,或者错误导致您认为这是JComboBox的问题。