gpt4 book ai didi

java - 添加记录后刷新 JTable 比使用 TableModel 或 fireRowValueChanged() 方法更简单

转载 作者:行者123 更新时间:2023-12-01 12:40:56 25 4
gpt4 key购买 nike

我正在做一个简单的 JTable 程序,没有任何严肃的代码。只是基本的。这是我的代码片段

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;


public class SampleClass implements ActionListener{
JFrame frame;
JTable table;
JButton button;

String columnName[] = {"Science"};
String rowName[][] = new String[10][1];

int i;

public static void main(String args[])
{
SampleClass obj = new SampleClass();
obj.setRowValues();
obj.build();
}
public void build() //Constructing GUI
{
frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

table = new JTable(rowName, columnName);
table.setFillsViewportHeight(true);

button = new JButton("New Value");

frame.getContentPane().add(table, BorderLayout.NORTH);
frame.getContentPane().add(button, BorderLayout.SOUTH);

frame.setVisible(true);

}
public void setRowValues() //Setting initial row values
{
for (i = 0 ; i < 5 ; i++)
{
rowName[i][0] = i + " First";
}
}
public void actionPerformed(ActionEvent arg0) { //Incrementing rowValues and repainting with no effect
rowName[i][0] = "New Value";
i++;
table.repaint();
}

}

这里我的问题是,当我单击按钮时,会在 rowName[][] 数组内添加额外的值。我希望这反射(reflect)到 JTable 表中。我尝试了 repaint() 但没有帮助。请告诉我更新或刷新 JTable 的最简单方法

我见过其他使用 AbstractTableModel 并调用 fireRowValueChanged() 方法的 stackoverflow 条目。这里我只使用基础知识。

最佳答案

Refresh JTable after adding records in an easier way than using a TableModel or fireRowValueChanged() methods

执行此操作的唯一正确方法是更新 TableModel。然后,TableModel 将调用适当的 fireXXX(...) 方法来通知 JTable 数据的更改,以便表可以重新绘制自身。您永远不需要手动调用 repaint()。

要将新行数据添加到 DefaultTableModel,您可以使用 addRow(...) 方法。

关于java - 添加记录后刷新 JTable 比使用 TableModel 或 fireRowValueChanged() 方法更简单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105330/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com