【问题标题】:How to get value from resizable JTable如何从可调整大小的 JTable 中获取价值
【发布时间】:2017-03-11 20:53:00
【问题描述】:

我有一个带有默认值的 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);
}
}

【问题讨论】:

  • 请发布有效的minimal reproducible example,以便我们自己运行和测试您的代码。这应该是一个小程序,小到可以作为代码格式的文本发布在本网站上,应该可以编译、运行并向我们展示您的问题。

标签: java swing jtable resizable getvalue


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-19
    • 2016-11-05
    • 2020-02-09
    • 2011-07-25
    • 1970-01-01
    相关资源
    最近更新 更多