Java 刷新Jtable内容
此代码的目的是,在单元格[0,1]中写入内容时,用随机数填充表格; 问题是表不会自动刷新自身。 仅当我移动边框或单击单元格时,表格才会刷新内容Java 刷新Jtable内容,java,swing,jtable,Java,Swing,Jtable,此代码的目的是,在单元格[0,1]中写入内容时,用随机数填充表格; 问题是表不会自动刷新自身。 仅当我移动边框或单击单元格时,表格才会刷新内容 import javax.swing.table.TableModel; public abstract class AbstractTableData implements TableModel{ public static AbstractTableData getTabellaDati(){ throw new Unsuppo
import javax.swing.table.TableModel;
public abstract class AbstractTableData implements TableModel{
public static AbstractTableData getTabellaDati(){
throw new UnsupportedOperationException("");
};
@Override
abstract public boolean isCellEditable(int rowIndex, int columnIndex);
}
/---------------------------------------------------/
import java.util.Random;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableModel;
public class TableData extends AbstractTableData{
public static final int N_C = 10;
public static final int N_R = 10;
public String[] heading;
public String[][] data;
public TableData(String[] h, String[][] data) {
this.heading = h;
this.data = data;
}
@Override
public int getRowCount() {
return heading.length;
}
@Override
public int getColumnCount() {
return data.length;
}
@Override
public String getColumnName(int columnIndex) {
return heading[columnIndex];
}
@Override
public Class<?> getColumnClass(int columnIndex) {
return "".getClass();
}
@Override
public boolean isCellEditable(int rowIndex, int columnsIndex) {
if (rowIndex == 0) {
if (columnsIndex == 0) {
return false;
} else {
return true;
}
} else {
return false;
}
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data[rowIndex][columnIndex];
}
@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
data[rowIndex][columnIndex] = (String)aValue;
fireTableUpadate(rowIndex, columnIndex);
}
@Override
public void addTableModelListener(TableModelListener l) {
}
@Override
public void removeTableModelListener(TableModelListener l) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
private void fireTableUpadate(int rowIndex, int columnIndex)
{
Random ran =new Random();
for(int i=1;i<N_R;i++)
for(int j=0;j<N_R;j++)
data[i][j]=""+ran.nextInt();
}
}
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
public class Test {
public static void main(String[] args) {
String[] head = new String[TableData.N_C];
String[][] data = new String[TableData.N_R][TableData.N_C];
for (int i = 0; i < TableData.N_C; i++) {
head[i] = "" + i;
}
for (int i = 0; i < TableData.N_R; i++) {
for (int j = 0; j < TableData.N_C; j++) {
data[i][j] = "";
}
}
data[0][0]="->";
JTable table = new JTable(data, head);
table.setModel(new TableData(head,data));
JPanel panel = new JPanel();
JFrame frame = new JFrame();
frame.add(panel.add(table));
frame.setSize(1000, 380);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
import java.util.Random;
导入javax.swing.event.TableModelListener;
导入javax.swing.table.TableModel;
公共类TableData扩展了AbstractTableData{
公共静态最终整数N_C=10;
公共静态最终整数N_R=10;
公共字符串[]标题;
公共字符串[][]数据;
公共表数据(字符串[]h,字符串[]数据){
这个标题=h;
这个数据=数据;
}
@凌驾
public int getRowCount(){
返回标题。长度;
}
@凌驾
public int getColumnCount(){
返回数据长度;
}
@凌驾
公共字符串getColumnName(int columnIndex){
返回标题[列索引];
}
@凌驾
公共类getColumnClass(int columnIndex){
返回“.getClass();
}
@凌驾
公共布尔值可编辑(int行索引、int列索引){
如果(行索引==0){
if(columnsIndex==0){
返回false;
}否则{
返回true;
}
}否则{
返回false;
}
}
@凌驾
公共对象getValueAt(int行索引、int列索引){
返回数据[rowIndex][columnIndex];
}
@凌驾
public void setValueAt(对象有效、int行索引、int列索引){
数据[rowIndex][columnIndex]=(字符串)aValue;
fireTableUpadate(行索引、列索引);
}
@凌驾
公共void addTableModelListener(TableModelListener l){
}
@凌驾
公共void removeTableModelListener(TableModelListener l){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
私有void fireTableUpadate(int行索引、int列索引)
{
Random ran=新的Random();
对于(int i=1;iYou。在上面的链接中有更多详细信息。完全错误(假设模型是一种TableModel):a)addTableModelListener的空实现(根据需要阻止通知)b)在一次更新中触发多个事件-arrrgghh误读FireTablea更新:您似乎在随机更改基础数据结构。顺便说一句:什么是AbstractTableData?无论如何,请先阅读一篇关于JTable/TableModel如何协同工作的教程,f.i.swing标记wiki中引用的教程。好的,我知道我有e以在TableData中实现addTableModelListener,但是我错过了您的第二个建议add@kleopatra(或者任何人,@
很重要)通知他们新的注释。