gpt4 book ai didi

java - 如何使用 AbstractTableModel 在 JTable 上添加行?

转载 作者:行者123 更新时间:2023-11-29 07:00:45 24 4
gpt4 key购买 nike

我有一个 JTable 和我自己的模型(扩展 AbstractTableModel),我想在单击 JButton 时向它添加一行。

我真的不知道如何将行添加到模型。

这是我的模型:

public class MembersModel extends AbstractTableModel {
String[] columnNames = {
"Name",
"Money Spent",
"Percent",
"Current Deck"
};

Object[][] data = {
{"Cajo", new Integer(150), new Integer(0), "Event Deck"},
{"Sekiam", new Integer(200), new Integer(0), "Jeskay"},
{"Nuvas", new Integer(100), new Integer(0), "Big Shit"},
{"Dos", new Integer(100), new Integer(0), "Crap Deck"},
{"Atoj", new Integer(100), new Integer(0), "IDK"}
};

public MembersModel(){
super();
calcAllPercent();
}

public void calcAllPercent(){
for(int i = 0; i < data.length; ++i){
data[i][2] = calcPercetage((Integer) data[i][1]);
}
}

private int calcPercetage(int money){
return (money*100)/teamMoneySpent();
}

private int teamMoneySpent(){
int money = 0;
for(int i = 0; i < data.length; ++i){
money += (Integer) data[i][1];
}
return money;
}

public int getColumnCount() {
return columnNames.length;
}

public int getRowCount() {
return data.length;
}

public String getColumnName(int col) {
return columnNames[col];
}

public Object getValueAt(int row, int col) {
return data[row][col];
}

public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}

public boolean isCellEditable(int row, int col) {
return false;
}

public void setValueAt(Object value, int row, int col) {
data[row][col] = value;
calcAllPercent();
fireTableRowsUpdated(0, 4);
}
}

我应该同时创建我的表还是将方法添加到模型中?

最佳答案

关键将是您用于模型的数据核,这是您的二维数组,Object[][] data .然后问题归结为:如何向数组添加另一行,然后将添加通知模型的监听器。虽然这可以通过创建一个包含另一行的新数据数组、从该数组复制所有数据并将新数据添加到新添加的行来完成,但何必呢?为了我的钱,我会

  • 创建一个类来保存单个表行的数据,在这里我将其命名为MyType , 但你会给它一个更好的名字,它会有 String、int、int 和 String 字段来对应你的表的列。
  • 为此类提供上面模型中的一些方法,例如执行特定于行的计算,calcPercentage(..) , teamMoneySpent(...) ,然后模型可以在需要此信息时调用行对象的方法。
  • 使用ArrayList<MyType>作为我的表模型数据核心,不是二维硬编码数组。
  • 给我的模型类 addRow(MyType myObj)方法
  • 在方法中添加到ArrayList
  • 然后调用适当的模型通知方法,此处为 fireTableRowsInserted(...) .

请注意,我不确定您的意思,

Should i create my table aswell or add the method to the Model?

关于java - 如何使用 AbstractTableModel 在 JTable 上添加行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26564023/

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