对不起,这个问题并不令人满意。让我解释一下。
我正在构建一个GUI,允许用户向系统添加新的巡航。在第1帧,我有一个JList,它显示系统中所有巡航的名称,即
___________________
|Scottish Cruise1 |
|Scottish Cruise2 |
| |
|_________________|
以下是构建JList的代码:
ArrayList Cruise = new ArrayList();
Cruise.add("Scottish to Greek Waters");
Cruise.add("Greek to Scottish Waters");
JScrollPane scrollPane = new JScrollPane();
CruiseList = new JList(Cruise.toArray());
CruiseList.setPreferredSize(new Dimension(200, 200));
scrollPane.setViewportView(CruiseList);
CruiseList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
CruiseList.setSelectedIndex(-1);
CruiseList.setVisibleRowCount(6);
listPanel.add(scrollPane);
Frame1.setVisible(true);
如您所见,我将Cruise对象存储在ArrayList Cruise = new ArrayList();
。
然而,第2帧显示另一个GUI,允许用户添加新的Cruise。为了将新Cruise添加到系统中,必须完成以下表单元素:
Cruise Name: JTextField
Start Port: JComboBox
End Port: JComboBox
Start Date: JSpinner
End Date: JSpinner
Assigned to ship: JList
假设Cruise已成功添加到系统中(新的巡航对象也存储在同一个ArrayList中 - ArrayList Cruise = new ArrayList();
。
问题:
第1帧我有两个按钮:
1. More Details
2. List all Cruises
当我从JList中选择一个Cruise并点击“More Details”时,我想输出字符串,其中包含分配给它的所有细节作为这种格式的输出:
Cruise Name: ________
Start Port: _________
End Port: _______
Start Date: _________
End Date: _______
Assigned to ship: ______
当我从JList中选择一个Cruise并单击“List Details”时,我只希望它输出Cruise Name。
我需要两个独立的ArrayLists吗?除此之外,我如何能够成功地进行新的巡航,获得仅仅是Cruise名称&在frame1上的JList上显示它?
答案 0 :(得分:0)
有一个列表模型接口可以与 JList 一起使用。让您的列表模型DefaultListModel<Cruise> cruises = new DefaultListModel<>()
实现ListModel
接口。
cruises.add("Scottish to Greek Waters");
cruises.add("Greek to Scottish Waters");
然后使用新的Cruiselist
发起您的JList(cruises)
。如果希望使用新值更新列表,请更新模型。