表在刷新后停止响应点击

时间:2014-04-21 22:56:51

标签: java jtable javamail

我有以下代码:

retrieveMessages.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent arg0) {
        model.resetList();
        top.remove(scrollPane);
        folder = new getMessages().getMessagesInstance();
        folder.initGetMessages();
        model = new MessageTableModel().getModelInstance();

        table = new JTable(model);
        table.setTableHeader(null);
        System.out.println("Got to here");
        scrollPane = new JScrollPane(table);
        scrollPane.setPreferredSize(new Dimension(150,150));
        top.add(scrollPane, BorderLayout.CENTER);
        table.setVisible(true);
        dialog.setVisible(true);        
    }
});

folder = new getMessages().getMessagesInstance();
folder.initGetMessages();
model = new MessageTableModel().getModelInstance();
table = new JTable(model);
table.setTableHeader(null);

scrollPane = new JScrollPane(table);
scrollPane.setPreferredSize(new Dimension(150,150));
top.add(scrollPane, BorderLayout.CENTER);

table.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
    public void valueChanged(ListSelectionEvent event) {
        MessageTableModel model = new MessageTableModel().getModelInstance();
        try {
            String message = model.getMessage(table.getSelectedRow()).getMessage().toString();
            messageArea.setText(Jsoup.parse(message).text());
            System.out.println("Selected!");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
});

第一个函数和另外两个函数之间有一些代码,但它不会编辑任何数据。这就是问题所在。当我加载GUI时,表响应正常,就像它应该的那样(如在上一个函数中)。但是,当我激活retrieveMessages函数时,它会刷新表,但是现在单击这些行不会执行任何操作。我已经尝试过对打印输出进行严格编码,看看它是否已经到了那里,但它不是,或者它只是不起作用。

是的,我尝试过fireDataChanged。除了在原始表格的底部添加与原始电子邮件完全相同的整个电子邮件块之外,其他任何内容都没有。所以我有两倍的大小表,所有电子邮件的副本两次。 fireDataRowsDeleted也没有做任何事情。

帮助?

1 个答案:

答案 0 :(得分:0)

尝试创建全局公共表并将其添加到:

 table.setModel(your_new_model_goes_here);
//update the global table with a new model`enter code here`

您当前正在创建不同的表对象。