0

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();
        }
    });
4

2 に答える 2

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
}
于 2013-04-10T12:52:59.900 に答える
0

ありがとう!本当に感謝しています:)ちなみに、それが必要な人のために、ここに私の特定の状況のた​​めの私のコードがあります:

    public static void getUsername() {
    usernames.add(Frame.username);
    model = new DefaultListModel();
    model.addElement(usernames.toString());
    list.setModel(model);
    list.setSelectedIndex(0);
}
于 2013-04-10T16:33:22.163 に答える