gpt4 book ai didi

Java swing UI 实现,很可能涉及 PropertyChangeListener

转载 作者:行者123 更新时间:2023-11-30 04:51:36 25 4
gpt4 key购买 nike


我的用例如下--
我有一个对象列表(ArrayList),自定义数据对象。
现在我想将每个数据对象显示或表示为包含 3 个按钮的框。因此,我的列表中将有 n 个用于 n 给定数据对象的框。

我希望每个“盒子”都堆叠在 JTable 中。

现在,每当将数据对象添加到上述列表时,我希望像前面提到的那样创建另一个 Box 并将其添加到 JTable 中。

我知道这可以使用 PropertyChangeListener 来完成,但我浏览了一些有关 PropertyChangeListener 的在线文章,但无法获得清晰的可实现想法。

我是构建 UI 的新手,如果您能提供任何帮助,我们将不胜感激。

最佳答案

我建议将您的 ArrayList 包装在 TableModel 实现中,由此对列表的修改将触发 TableModelEvent

在下面的示例中,底层列表封装在模型实现中;修改它的唯一方法是调用addItem,它会在修改列表后调用fireTableRowsInserted。这将导致 TableModelEvent 被触发,并随后由 JTable View 对此模型实例进行处理。

public class MyTableModel extends AbstractTableModel {
private final List<MyItem> items = new ArrayList<MyItem>();

public int getRowCount() {
return items.size();
}

public int getColumnCount() {
return 3;
}

public String getColumnName(int columnIndex) {
switch(columnIndex) {
case 0:
return "foo";
case 1:
return "bar";
case 2:
return "qux";
default:
assert false : "Invalid column index: " + columnIndex;
}
}

public void addItem(MyItem item) {
items.add(item);
fireTableRowsInserted(items.size() - 1, items.size() - 1);
}
}

关于Java swing UI 实现,很可能涉及 PropertyChangeListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9722625/

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