Tôi đã JComboBox dựa trên ArrayList:Làm thế nào để cập nhật nội dung JComboBox từ ArrayList?
private ArrayList<String> klienci = new ArrayList<String>();
private JComboBox klienciLista;
và tôi thêm nó vào constructor:
klienciLista = new JComboBox(klienci.toArray());
klienciLista.setPrototypeDisplayValue("#############################");
panel.add(klienciLista); //JPanel panel
Tại Danh sách bắt đầu là rỗng. Khách hàng được thông qua ổ cắm ArrayList mới trong chủ đề:
public void run() {
try {
host = InetAddress.getLocalHost().getHostName();
socket = new Socket(host, SERVER_PORT);
input = new ObjectInputStream(socket.getInputStream());
output = new ObjectOutputStream(socket.getOutputStream());
output.writeObject(nazwa);
} catch (IOException e) {
System.out.println(e);
JOptionPane.showMessageDialog(null,
"Polaczenie sieciowe dla klienta nie moze byc utworzone");
setVisible(false);
dispose(); // zwolnienie zasobów graficznych
// okno graficzne nie zostanie utworzone
return;
}
try {
while (true) {
container = new Object[2];
container = (Object[]) input.readObject();
String m = (String) container[0];
setKlienci((ArrayList<String>) container[1]);
klienciLista = new JComboBox(klienci.toArray());
String pom = textArea.getText();
textArea.setText(pom + ">>> " + m + "\n");
klienciLista.revalidate();
panel.revalidate();
panel.repaint();
if (m.equals("exit")) {
input.close();
output.close();
socket.close();
setVisible(false);
dispose();
break;
}
}
} catch (Exception e) {
System.out.println(e);
JOptionPane.showMessageDialog(null,
"Polaczenie sieciowe dla klienta zostalo przerwane");
setVisible(false);
dispose();
}
}
Những gì tôi muốn làm là JComboBox klienciLista tôi điền với ArrayList mới của khách hàng sẵn có, nhưng điều đó không xảy ra. Sau khi kết nối, máy chủ sẽ gửi arrayList và máy khách cập nhật nó nhưng không cập nhật ComboBox. Tại sao điều này?
uhh, bạn giúp rất nhiều. cám ơn. – TrN
Câu trả lời này giúp tôi! – Francisunoxx