博为峰小博老师:
这个程序首先创建一个DefaultListModel类的继承类,然后将其实例化成两个不同的列表框,当双击左边的列表框中的数据时,就会在右边添加相应的数据,反之亦然。具体代码如下:
public class BWF extends MouseAdapter{
JList<String> list1=null;
JList<String> list2=null;
DefaultListModel<String> mode1=null;
DefaultListModel<String> mode2=null;
String[] s={"Java","C","C#","Hibernate"};
public BWF(){
JFrame jf=new JFrame("博为峰教育");
Container contentPane=jf.getContentPane();
contentPane.setLayout(new GridLayout(1, 2));
mode1=new DataModel(1);
list1=new JList<String>(mode1);
list1.setBorder(BorderFactory.createTitledBorder("图书种类!"));
list1.addMouseListener(this);
mode2=new DataModel(2);
list2=new JList<String>(mode2);
list2.setBorder(BorderFactory.createTitledBorder("您选择的书:"));
list2.addMouseListener(this);
contentPane.add(new JScrollPane(list1));
contentPane.add(new JScrollPane(list2));
jf.pack();
jf.setVisible(true);
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
public static void main(String[] args) {
new BWF();
}
//鼠标双击事件
public void mouseClicked(java.awt.event.MouseEvent e) {
int index;
if(e.getSource()==list1){
if(e.getClickCount()==2){
index=list1.locationToIndex(e.getPoint());
String tmp=(String)mode1.getElementAt(index);
mode2.addElement(tmp);
list2.setModel(mode2);
mode1.removeElementAt(index);
list1.setModel(mode1);
}
}
if(e.getSource()==list2){
if(e.getClickCount()==2){
index=list2.locationToIndex(e.getPoint());
String tmp=(String)mode2.getElementAt(index);
mode1.addElement(tmp);
list1.setModel(mode1);
mode2.removeElementAt(index);
list2.setModel(mode2);
}
}
}
class DataModel extends DefaultListModel<String>{
DataModel(int flag) {
if(flag==1){
for(int i=0;i<s.length;i++){
addElement(s[i]);
}
}
}
}
}