我的JScrollPane未正确更新。
public static JScrollPane scrollPane;
public static List<String> usernames = new ArrayList<String>();
public static JList list;
public static void getUsername() {
usernames.add(Frame.username);
list = new JList(usernames.toArray());
scrollPane = new JScrollPane(list);
// Update
scrollPane.revalidate();
list.revalidate();
panel.revalidate();
frame.repaint();
System.out.println("user connected");
}
我在滚动窗格,jlist,面板和框架上尝试了repaint(),revalidate()和validate(),并且滚动窗格不会更新。如果我在数组中添加一个带有新数据的新滚动窗格,它会更新。
server.addListener(new Listener() {
public void received(Connection connection, Object object) {
new Run();
players++;
playerLabel.setText("Players currently online: " + players);
getUsername();
}
});
答案 0 :(得分:1)
当您在列表中添加新内容时,请尝试使用
yourList.setListData(newData);
并将列表添加到滚动窗格
<强>更新强>
DefaultListModel<String> model;
private void UpdateJList(){
model = new DefaultListModel<String>();
for(Users u : list){
model.addElement(u.ToString());
}
theJList.setModel(model);
theJList.setSelectedIndex(0); // this will mark the first row (item) on the list
}
答案 1 :(得分:0)
谢谢你!真的很感激:)顺便说一句,对于任何需要它的人来说,这是我的具体情况代码:
public static void getUsername() {
usernames.add(Frame.username);
model = new DefaultListModel();
model.addElement(usernames.toString());
list.setModel(model);
list.setSelectedIndex(0);
}