가 나는 JComboBox에 ArrayList를 기반으로 한 :ArrayList에서 JComboBox 내용을 업데이트하는 방법은 무엇입니까?
private ArrayList<String> klienci = new ArrayList<String>();
private JComboBox klienciLista;
내가 생성자에 추가 : 시작 목록에서
klienciLista = new JComboBox(klienci.toArray());
klienciLista.setPrototypeDisplayValue("#############################");
panel.add(klienciLista); //JPanel panel
가 비어 있습니다.
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();
}
}
는 내가하고 싶은 것은 내 JComboBox에 klienciLista 가능한 클라이언트의 새로운 ArrayList를 채울 것입니다,하지만 발생하지 않습니다 : 클라이언트 스레드에서 소켓 새로운 ArrayList를 통해 얻을 수 있습니다. 연결 후 서버는 arrayList를 보내고 클라이언트는 업데이트하지만 ComboBox는 업데이트하지 않습니다. 왜 이런거야?
어, 많은 도움이됩니다. 고마워. – TrN
이 답변은 나를 도와줍니다! – Francisunoxx