我尝试使用一些数据填充服务器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中。我真的很困惑。
提前感谢所有人。
答案 0 :(得分:0)
从很快检查您的代码,您似乎甚至没有调用方法
public void fullCombobox(List<ClientInterface> lista) throws RemoteException {}
您忘记在代码中显示调用,或者错误导致您认为这是JComboBox的问题。