【问题标题】:Syncing a JTable with ArrayList of Objects values in Java在 Java 中将 JTable 与对象值的 ArrayList 同步
【发布时间】:2015-09-05 09:54:11
【问题描述】:

我的程序有一个显示学生信息的 JTable。例如

Columns contain: "Name", "Surname", "Age", "Year"

我也有一个对象类学生如下:

public class Student {
    private final String name;
    private final String surname;
    private final int age;
    private int year;

    public Student(String name, String surname, int age, int year) {
        this.name = name;
        this.surname = surname;
        this.age = age;
        this.year = year;
    }

    public String getName() {
        return this.name;
    }

    public String getSurname() {
        return this.surname;
    }

    public int getAge() {
        return this.age;
    }

    public int getYear() {
        return this.year;
    }

    public void setYear(int i) {
        this.year = i;
    }
}

我在下面有一个 StudentManager:

public class StudentManager {
    private static ArrayList<Student> students = new ArrayList<Student>();

    public static void addStudent(Student obj) {
        this.students.add(obj);
    }

    public static void removeStudent(Student obj) {
        this.students.remove(obj);
    }

    public static Student getStudentByName(String n) {
        for(Student s : this.students) {
            if(s.getName() == n)
                return s;
        }
        return null;
    }
}

我想知道的:

我想要它,以便当我更改学生类对象中的值时,JTable 将使用新信息进行更新。

如果我要从 ArrayList 中删除 Student 类对象,我还希望 JTable 删除学生的行。

添加学生也一样,我希望它在 JTable 中添加一行学生姓名、姓氏、年龄和年份。

【问题讨论】:

  • 你有什么问题?
  • 我的问题基本上是洞底段落,在“我想知道的:”下
  • 这是问答网站。你要么就具体问题提出问题,要么得不到明智的回答。从您的帖子看来,您希望我们为您编程,这不会发生。
  • 我意识到这一点,不,我不想让你为我编程,我只是这样写,因为我不确定它是如何工作的,所以我试着写我想要的发生。

标签: java swing arraylist jtable


【解决方案1】:

您需要创建一个StudentTableModel(扩展AbstractTableModel)来为JTable 提供数据,并且当发生某些更改时,它将触发更新(fire* 方法)。

接下来,StudentTableModel 需要知道发生了一些变化。我会为此使用PropertyChangeListener。请参阅PropertyChangeSupport 了解其使用方法。

基本上,您的StudentTableModel 将监听来自StudentManager 和每个Student 的更改,并将更新传播到JTable

替代方式:

  • 您可以使用Observable/Observer 代替PropertyChangeListener
  • 您可以合并StudentTableModelStudentManager 的功能

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 2010-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多