gpt4 book ai didi

Java 将 Swing 表存储在 Arraylist 中

转载 作者:行者123 更新时间:2023-12-02 11:22:44 31 4
gpt4 key购买 nike

我有一个具有名称和姓氏属性的 Person 类。我将 Person 对象存储在 PersondDatabase 中的 Arraylist 中。我还有一个 Swing 表,其中列名“name”和“lastname”带有可编辑单元格。

如果填写了姓名和姓氏,我想在数据库中创建一个新条目。例如,当我的数据库中的swing表中填写Joe(姓名)和Jones(姓氏)时,是Joe Joe的新条目,但它应该是Joe Jones。

class Person {
String name; String lastname;
...
}

public class PersonDatabase{

ArrayList<Person> persons = new ArrayList<Person>();

public newEntry(String name, String lastname) { // adds a Person to
//Database
persons.add(new Person(name, lastname));
}
}


class TabelModel extends AbstractTableModel {
PersonDatabase db = new PersonDatabase()
private String[] columnNames = { "name", "lastname" };
private Vector<Object[]> rows = new Vector<Object[]>();

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
String[] row = (String[]) rows.get(rowIndex);
return row[columnIndex];
}

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

@Override
public void setValueAt(Object aValue, int rowIndex) {
rows.get(rowIndex)[columnIndex] = aValue;
int tmp = columnIndex++;
db.newEntry((String)aValue,(String) getValueAt(rowIndex,tmp);
// Here i want to add a Person to Database
fireTableCellUpdated(rowIndex, columnIndex);
}
}

如有任何帮助,我们将不胜感激。

最佳答案

Yes, i have a method addRowToEnd

因此,您需要在应用程序逻辑中的某个位置调用该方法,以将一个空的 Person 对象添加到您的“PersonDatabase”中。

public void setValueAt(...)

调用此方法仅用于更新单个单元格。您不应该尝试调用数据库的 newEntry(...) 方法。

相反,您需要访问该行的当前 Person 对象,然后根据要更新的列更新名字或姓氏。

因此,一个更简单的解决方案是将 Person 对象的 ArrayList 存储在 PersonTableModel 中。请注意,不要将您的类 TableModel 称为接口(interface)名称并且会造成混淆。使用更具描述性的名称。

查看Row Table Model有关创建自定义 TableModel 的分步示例。

关于Java 将 Swing 表存储在 Arraylist 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806404/

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