【问题标题】:How to add a "listener" to a JList如何将“侦听器”添加到 JList
【发布时间】:2016-08-21 17:07:42
【问题描述】:

我知道JList 不支持ActionListeners,正如here 所说,但我需要实现一个列表,当新套接字连接到服务器时,该列表会在框架中不断变化。所以我的问题是:实施此列表的最佳方式是什么?

【问题讨论】:

  • 所以当一个新的套接字连接时你的列表应该得到更新。它与 actionListner 有什么关系
  • 好吧,我想当某些事情发生时要更新列表,它需要有一个监听器等待这个事情,对吧?

标签: java swing sockets jlist


【解决方案1】:
DefaultListModel<String> data = new DefaultListModel<>();  //defaultlistModel

/**
adding data to jlist    **/
       data.addElement("new element");
       jList1.setModel(data);



/**action listner on data(defaultlistModel) will be called when the list is changed*/

    public void addlistner(){


    data.addListDataListener(new ListDataListener() {
        @Override
        public void intervalAdded(ListDataEvent e) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void intervalRemoved(ListDataEvent e) {
            throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
        }

        @Override
        public void contentsChanged(ListDataEvent e) {
            System.out.println("added"+e.getIndex1());   
        }
    });

    } 

你不能用 jlist 做到这一点。但它可能与defaultListModel 每当您需要向 jlist 添加数据时。您应该将元素添加到defaultlistmodel,然后将模型设置到jlist。 然后您可以编写一个侦听器来调用 defaultListModel 中的更改属性。看看我的代码。

【讨论】:

  • 附加信息:当使用 JList.setModel() 时要小心使用 JList.setListData() - 这会构造一个新模型,并且带有其侦听器的旧模型将消失!
猜你喜欢
  • 2015-09-23
  • 2014-01-29
  • 2022-08-03
  • 2013-02-17
  • 2011-09-28
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多