文档侦听器仅适用于挥杆事件中的一侧

时间:2016-01-25 06:11:13

标签: java swing jtable rowfilter documentlistener

我在JTable上有一个JButton和两个JDialog。当我点击一个JButton(活动按钮)时,我可以将一些数据加载到此JTable 1}}。这也与第二个JButton(非活动按钮)相同。

以下是一些屏幕截图,

Active button

Inactive button

然后我尝试使用文本字段搜索表格中的数据。所以我为此目的使用文档监听器。但这只适用于Active button

以下是我用来执行此操作的步骤,

Vector originalTableModel;
DocumentListener documentListener; 

在JDialog的构造函数中,

originalTableModel = (Vector) ((DefaultTableModel) searchTable.getModel()).getDataVector().clone();
//add document listener to jtextfield to search contents as soon as something typed on it
addDocumentListener();

其他步骤和方法,

private void searchTextKeyReleased(java.awt.event.KeyEvent evt)                                       
{                                           
    searchTableContents(searchText.getText());
}

private void addDocumentListener()
{
    documentListener = new DocumentListener()
    {
        public void changedUpdate(DocumentEvent documentEvent)
        {
            search();
        }

        public void insertUpdate(DocumentEvent documentEvent)
        {
            search();
        }

        public void removeUpdate(DocumentEvent documentEvent)
        {
            search();
        }

        private void search()
        {
            searchTableContents(searchText.getText());
        }

    };
}

public void searchTableContents(String searchString)
{
    DefaultTableModel currtableModel = (DefaultTableModel) searchTable.getModel();
    //To empty the table before search
    currtableModel.setRowCount(0);
    //To search for contents from original table content
    for (Object rows : originalTableModel)
    {
        Vector rowVector = (Vector) rows;
        for (Object column : rowVector)
        {
            if (column.toString().toLowerCase().contains(searchString.toLowerCase()))
            {
                //content found so adding to table
                currtableModel.addRow(rowVector);
                break;
            }

        }
    }
}

实际上我想为JButtons进行搜索。

对此有任何想法吗?

谢谢。

0 个答案:

没有答案