gpt4 book ai didi

java - 如何从可调整大小的 JTable 中获取值

转载 作者:行者123 更新时间:2023-12-02 13:41:08 25 4
gpt4 key购买 nike

我有一个带有默认值的 JTable 4x4。用户可以更改 JTable 大小。将尺寸更改为例如后。 6x6,默认值被清除,用户可以键入自己的值。如何将它们放到某个整数表中?我尝试使用模型类中的 getValueAt() 和 setValueAt(),但单击其他​​单元格后 JTable 字段总是被清除。

class MyTableModel extends AbstractTableModel {

int size;
private String[] columnNames = { "Stan 1", "Stan 2", "Stan 3", "Stan 4" };

private Object[][] defaultValues = new Object[][] {
{ "5", "15", "10", "0"},
{ "10", "10", "-20", "30"},
{ "40", "0", "50", "-30"},
{ "60", "0", "20", "-10"}};

private Object[][] newData = null;

public MyTableModel(int x) {
size = x;
}

@Override
public int getRowCount() {
return size;
}

@Override
public int getColumnCount() {
return size;
}

@Override
public String getColumnName(int columnIndex) {
if(columnIndex == 0) return null;
else return "Stan " + Integer.toString(columnIndex);
}

@Override
public Class getColumnClass(int columnIndex) {
return Integer.class;
}

@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
if(size == 4)
return defaultValues[rowIndex][columnIndex];
else {
newData = new Object[size][size];
return newData[rowIndex][columnIndex];
}
}

@Override
public void setValueAt(Object value, int rowIndex, int columnIndex) {
if(size == 4)
defaultValues[rowIndex][columnIndex] = value;
else
newData[rowIndex][columnIndex] = value;

fireTableCellUpdated(rowIndex, columnIndex);
}
}

最佳答案

不需要自定义 TableModel 或重写 getValueAt(...) 和 setValueAt(...) 方法。

如果您想更改 DefaultTableModel 中的数据,只需使用 setDataVector(...) 方法即可。

关于java - 如何从可调整大小的 JTable 中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740508/

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