Java swing UI实现,很可能涉及PropertyChangeListener
Java swing UI实现,很可能涉及PropertyChangeListener,java,swing,user-interface,jtable,propertychangelistener,Java,Swing,User Interface,Jtable,Propertychangelistener,我的用例如下-- 我有一个对象、自定义数据对象的列表(ArrayList)。 现在,我想将这些数据对象显示或表示为一个包含3个按钮的框。因此,我会在列表中为给定的数据对象设置n框 我希望这些“盒子”中的每一个都堆放在一个,比如说,JTable 现在,每当一个数据对象被添加到上述列表中时,我都希望像前面提到的那样创建另一个框并添加到JTable中。 我知道这可以通过使用PropertyChangeListener来实现,但是我在网上浏览了一些关于PropertyChangeListener的文章,
我的用例如下--
我有一个对象、自定义数据对象的列表(ArrayList)。
现在,我想将这些数据对象显示或表示为一个包含3个按钮的框。因此,我会在列表中为给定的数据对象设置
n
框我希望这些“盒子”中的每一个都堆放在一个,比如说,
JTable
现在,每当一个数据对象被添加到上述列表中时,我都希望像前面提到的那样创建另一个框并添加到JTable中。
我知道这可以通过使用PropertyChangeListener来实现,但是我在网上浏览了一些关于PropertyChangeListener的文章,但是没有得到一个清晰的可实现的想法
我对构建UI还不熟悉,如果有任何帮助,我将不胜感激。
我建议将您的
数组列表
包装在表格模型
实现中,这样对列表的修改将触发表格模型事件
在下面的示例中,基础列表封装在模型实现中;修改它的唯一方法是调用addItem
,它将在修改列表后调用fireTableRowsInserted
。这将导致触发一个TableModelEvent
,然后由JTable视图对此模型实例进行处理
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);
}
}
公共类MyTableModel扩展了AbstractTableModel{
私有最终列表项=新的ArrayList();
public int getRowCount(){
返回items.size();
}
public int getColumnCount(){
返回3;
}
公共字符串getColumnName(int columnIndex){
开关(列索引){
案例0:
返回“foo”;
案例1:
返回“bar”;
案例2:
返回“qux”;
违约:
断言false:“无效列索引:”+columnIndex;
}
}
公共无效附加项(MyItem){
项目。添加(项目);
fireTableRowsInserted(items.size()-1,items.size()-1);
}
}
“非常感谢您的帮助”如果您不去想“sigs”这样的噪音,我们将不胜感激。顺便说一句,你有问题吗?如果是,那是什么?可能一切都取决于JComponent的类型保持活动对象如果我正确理解问题,您将为给定的数据对象设置n
按钮。此外,您如何看待从列表到表的映射?为什么不坚持使用JList
。您不应该在PropertyChangeListener
s上搜索,而应该在TableModel
或ListModel
上搜索,这是表/列表后面的模型,更新此模型将更新视图侧以及n个框而不是按钮。我已经改正了那个错误。