我的任务是创建一个具有两个JLists
(左和右)的GUI,并且能够使用添加和删除按钮在两个列表之间移动项目。
一旦添加到右侧列表中,该项目就不再显示在左侧列表中。如何让这些按钮执行正确的操作?
请参阅下面的代码:
JList<String> leftList = new JList<String>();
leftList.setModel(new AbstractListModel<String>() {
String[] values = new String[] {"Car", "Truck", "Boat", "Plane"};
public int getSize() {
return values.length;
}
public String getElementAt(int index) {
return values[index];
}
});
leftList.setBounds(0, 0, 196, 539);
frame.getContentPane().add(leftList);
JList<String>rightList = new JList<String>();
rightList.setBounds(285, 0, 196, 539);
frame.getContentPane().add(rightList);
//this will create the add and remove buttons
JButton btnAddButton = new JButton(">>");
btnAddButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
}
});
btnAddButton.setBounds(218, 247, 49, 34);
frame.getContentPane().add(btnAddButton);
JButton btnRemoveButton = new JButton("<<");
btnRemoveButton.setBounds(218, 292, 49, 34);
frame.getContentPane().add(btnRemoveButton);
}
答案 0 :(得分:0)
结帐列表演示
https://docs.oracle.com/javase/tutorial/uiswing/components/list.html
准则:
你不应该使用局部变量,因为一旦方法结束,它们都会消失,只有这样才能让它们回来
((JComponent)frame.getContentPane().getComponent(n)).getComponent(n)
我指的是你的&#34; GUI&#34;和
String[] values;
你不应该使用&#34; String []值&#34;因为数组具有固定的大小,因此你无法修改它,使用ArrayList。
在这种特殊情况下你根本不应该使用数组或列表,继续阅读......
开发GUI时你不应该精确,因为图形优化机制会在最后崩溃它,因此而不是使用&#34; AbstractListModel&#34;你应该试过&#34; DefaultListModel&#34;
(老实说,我试图用&#34; AbstractListModel&#34;并且在&#34; leftListModel&#34;中,getElementAt()方法只调用一次,并且每次进一步重新验证()和重绘( )不给出任何结果)
由于现在我们使用DefaultListModel不需要任何数组,而是有#34; addElement()&#34;