只用一个物体打开2帧

时间:2010-01-18 13:35:32

标签: java swing

这是我的代码的一部分,但我不知道为什么当我点击列表时它为我显示两个聊天框架? 这也是一个127.0.0.1 IP地址的客户端/服务器应用程序。你能帮我吗?

   private InformationClass client;
   private static DefaultListModel model = new DefaultListModel();
   private ListSelectionModel moDel;

/** Creates new form ListFrame */
public ListFrame(InformationClass client) {
    initComponents();
    this.client = client;
    jList1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);


    fillTable();

}


 private void jList1ValueChanged(javax.swing.event.ListSelectionEvent evt) {                                    

    ChatFrame frame = new ChatFrame(client);
    frame.setVisible(true);

} 


 public void fillTable() {
    try {
        List<InformationClass> list = null;
        list = Manager.getClientListFromMySQL();
        if (list == null) {

            JOptionPane.showMessageDialog(this, "You should add a person to your list", "Information", JOptionPane.OK_OPTION);
            return;
        } else {


            for (int i = 0; i < list.size(); i++) {
                InformationClass list1 = list.get(i);
                model.add(i, list1.getId());
            }

            jList1.setModel(model);
        }


    } catch (SQLException ex) {
        Logger.getLogger(ListFrame.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1 个答案:

答案 0 :(得分:0)

当选择发生变化时,

jList1ValueChanged被调用两次。一次使用evt.getValueIsAdjusting() true,一次使用false

为什么在选择更改时打开框架而不添加按钮来打开框架,或者双击列表做出反应?

修改: 如果您真的想对点击做出反应,只需使用mouseClicked事件即可。然后,将忽略按键盘更改选择。