2011-05-19 78 views
1

我想要将JScrollPane中的JList绑定到数组,只要数组更改List更改。将Swing JList绑定到数组中

+0

@Ahmed,当你点击“插入”时,你想要你的队列(JScrollPane中的JList)?添加一个项目并且JTextField会更新以显示队列的大小? – mre 2011-05-19 04:30:30

+0

不,当我按下插入时,我会在窗格中显示队列的内容。 文本字段是另一个输入 – Ahmed 2011-05-19 04:37:29

+0

@Ahmed,队列的“内容”是什么以及它们的来源在哪里?我想我至少在形象上还是有点困惑。在这一切中,文本场究竟扮演什么角色? – mre 2011-05-19 04:43:56

回答

1

第一个想法,当然会通过使用JList的建设者之一,并希望JList组件与阵列同步更新:

public JList(Object[] listData); 
public JList(Vector<?> listData); 

很显然,这是行不通的。只是,如果使用第三个非默认构造函数

public JList(ListModel model); 

,并使用默认实现DefaultListModel并通过例如直接更新其元素

DefaultListModel model = new DefaultListModel(); 
... 
model.setElementAt(value, 25); 

您会收到一个动态更新的JList组件,通过更新DefaultListModel

Java SE提供的是由java.util.Arrays.asList(T... a)方法提供的“固定大小列表备份指定数组”,比较Java SE API

但是,这里支持Java SE休息。没有ListModel实现“由列表备份”。

我试图克服这种双向的:

  1. 实现List接口在类同步更新一个 底层DefaultListModel
  2. 延长DefaultListModel,同步更新底层List实例。

都不行。

因此,我冒昧地说,Java SE不支持此功能,但尚未。您必须编写自己的JList实现,并将其同步到List实例,或者等到出现新的Java分发版本时,才能使用JList'sDefaultListModel's备份List实例的功能。