Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当键入的文本是JTable中的一行时刷新JTable_Java_Swing_Jtable_Jtextfield - Fatal编程技术网

Java 当键入的文本是JTable中的一行时刷新JTable

Java 当键入的文本是JTable中的一行时刷新JTable,java,swing,jtable,jtextfield,Java,Swing,Jtable,Jtextfield,我有一个JTable,有7列2行。在我的JTable下面有一个JTextField。当我在JTextField中键入内容时,我可以很容易地得到我键入的内容:String lookFor=this.jTextField2.getText() 但现在,我想在我的JTextField中键入内容后刷新我的JTable,但仅当一行(或多行)包含JTextField中的文本时。我试过这个,但没有结果: public Object[][] getTableData(JTable table) {

我有一个
JTable
,有7列2行。在我的
JTable
下面有一个
JTextField
。当我在
JTextField
中键入内容时,我可以很容易地得到我键入的内容:
String lookFor=this.jTextField2.getText()

但现在,我想在我的
JTextField
中键入内容后刷新我的
JTable
,但仅当一行(或多行)包含
JTextField
中的文本时。我试过这个,但没有结果:

public Object[][] getTableData(JTable table) {
        DefaultTableModel dtm = (DefaultTableModel) table.getModel();
        int nRow = dtm.getRowCount(), nCol = dtm.getColumnCount();
        Object[][] tableData = new Object[nRow][nCol];
        for (int i = 0; i < nRow; i++) {
            for (int j = 0; j < nCol; j++) {
                tableData[i][j] = dtm.getValueAt(i, j);
            }
        }
        return tableData;
    }

private void jTextField2KeyReleased(java.awt.event.KeyEvent evt) {                                        
        // TODO add your handling code here:

        DefaultTableModel newTableModel = new DefaultTableModel();
        String lookFor = this.jTextField2.getText();

        Object[][] td = getTableData(this.myTable);

        int rows = td.length;
        for (int i = 0; i < rows; i++) {
            String brand = (String) td[0][0];
            String model = (String) td[0][1];
            String serialNumber = (String) td[0][2];
            String date = (String) td[0][3];
            String firstname = (String) td[0][4];
            String lastname = (String) td[0][5];
            String desc = (String) td[0][6];

            if (brand.contains(lookFor) || model.contains(lookFor) || serialNumber.contains(lookFor) || date.contains(lookFor)
                    || firstname.contains(lookFor) || lastname.contains(lookFor) || desc.contains(lookFor));
            newTableModel.addRow(new Object[]{brand, model, serialNumber, date, firstname, lastname, desc});

        }

        this.myTable.setModel(newTableModel);
    } 
public Object[][]getTableData(JTable表){
DefaultTableModel dtm=(DefaultTableModel)table.getModel();
int nRow=dtm.getRowCount(),nCol=dtm.getColumnCount();
对象[][]表数据=新对象[nRow][nCol];
对于(int i=0;i
听起来您想进行表过滤


阅读上Swing教程中的部分,了解一个工作示例,该示例将在文本字段中输入文本时过滤显示的行。

听起来像是要进行表格过滤


阅读上Swing教程中的部分,了解一个工作示例,该示例将在您在文本字段中输入文本时过滤显示的行。

我尝试了您的代码,但您忘记了为新模型设置列。你必须这样做

newTableModel.setColumnCount(7)


只有在执行此操作时,才能在已显示的表中看到新数据的外观。

我尝试了您的代码,但您忘记了为新模型设置列。你必须这样做

newTableModel.setColumnCount(7)

只有在执行此操作时,才能在已显示的表中看到新数据的外观