Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/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在悬停/单击/滚动新数据时显示以前的数据_Java_Swing - Fatal编程技术网

Java JTable在悬停/单击/滚动新数据时显示以前的数据

Java JTable在悬停/单击/滚动新数据时显示以前的数据,java,swing,Java,Swing,所以我有两种方法方法1和方法2。这两种方法都是相同的,只是循环的有一个小的变化。单击按钮时,method_1将被执行,我将获得JTable中预期的数据,类似地,当单击第二个按钮时,method_2将被执行,我将获得结果,但是当我将鼠标悬停在表头上时,前面的列名将显示,单击行或滚动时,以前的数据将被覆盖 JScrollPane scrollPane_2; DefaultTableModel model; JTable table; public void method_1(){ Stri

所以我有两种方法方法1方法2。这两种方法都是相同的,只是循环的有一个小的变化。单击按钮时,method_1将被执行,我将获得JTable中预期的数据,类似地,当单击第二个按钮时,method_2将被执行,我将获得结果,但是当我将鼠标悬停在表头上时,前面的列名将显示,单击行或滚动时,以前的数据将被覆盖

JScrollPane scrollPane_2;
DefaultTableModel model;
JTable table;

public void method_1(){
    String[][] data = new String[10][4];
    for(int i=0;i<10;i++)
        for(int j=0; j<4; j++)
            data[i][j] = "one";

    String[] column = { "Column_1", "Column_2", "Column_3", "Column_4"};
    model = new DefaultTableModel(data, column);
    table = new JTable(model);
    scrollPane_2 = new JScrollPane(table);
    panel_6.add(scrollPane_2);
    panel_6.revalidate();
}

public void method_2(){
    String[][] data = new String[8][2];
    for(int i=0;i<8;i++)
        for(int j=0; j<2; j++)
            data[i][j] = "Row_"+i;

    String[] column = { "Column_1", "Column_2"};
    model = new DefaultTableModel(data, column);
    model.fireTableDataChanged();
    table = new JTable(model);
    scrollPane_2 = new JScrollPane(table);
    panel_6.add(scrollPane_2, BorderLayout.CENTER);
    panel_6.revalidate();
}
JScrollPane滚动窗格2;
默认表格模型;
JTable表;
公共作废方法_1(){
字符串[][]数据=新字符串[10][4];
对于(int i=0;i
将另一个组件添加到中心不会删除添加到中心的前一个组件。Swing默认绘制将按组件添加到容器的相反顺序绘制组件。因此,两个组件都会被绘制,但您会看到最后一个组件被绘制。但是,这可能会导致调度事件时出现问题不同的部件导致喷漆问题

不要继续创建新的JTable和JScrollPane组件

相反,当您想要更改表中的数据时,您需要做的只是更改现有JTable的模型。因此,您只需要:

table.setModel( theNewModel );
无需触发事件或重新验证()或其他任何操作

将另一个组件添加到中心不会删除添加到中心的前一个组件。Swing默认绘制将按组件添加到容器的相反顺序绘制组件。因此,两个组件都会被绘制,但您会看到最后一个组件被绘制。但是,这可能会导致调度事件时出现问题不同的部件导致喷漆问题

不要继续创建新的JTable和JScrollPane组件

相反,当您想要更改表中的数据时,您需要做的只是更改现有JTable的模型。因此,您只需要:

table.setModel( theNewModel );

不需要触发事件或重新验证()或其他任何操作。

这就成功了…创建新的JTable和JScrollPane就解决了问题。这就成功了…创建新的JTable和JScrollPane就解决了问题。