import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
public class Exec {
public static void main(String[] args) {
// 创建窗体类变量
DemoWindow dw = new DemoWindow("移动列表框元素");
// 将窗体的宽度和高度分别设置为屏幕宽度和屏幕高度的1/3,左上角位置也设置为屏幕宽度和屏幕高度的1/3处
Toolkit theKit = dw.getToolkit();
Dimension wndSize = theKit.getScreenSize();
dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
wndSize.height / 3);
// 点击关闭按钮可以退出程序
dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 设置窗体为可见
dw.setVisible(true);
}
}
//界面窗体
class DemoWindow extends JFrame implements ActionListener, MouseListener {
// 布局面板
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
// 操作按钮
JButton jb1 = new JButton(">>");
JButton jb2 = new JButton("<<");
// 列表框显示的文本标签
String[] items = { "苹果", "桔子", "香蕉", "梨子", "葡萄", "香瓜" };
// 第一个列表框
JList jl1 = new JList();
// 第二个列表框
JList jl2 = new JList();
// 列表框模型
DefaultListModel dlm1 = new DefaultListModel();
DefaultListModel dlm2 = new DefaultListModel();
// 构造函数
public DemoWindow(String title) {
super(title);
// 窗体布局
jp1.setLayout(new GridLayout(1, 2));
jp1.add(jl1);
jp1.add(jl2);
jp2.add(jb1);
jp2.add(jb2);
add(jp1, BorderLayout.CENTER);
add(jp2, BorderLayout.NORTH);
// 设置第一个列表框的模型
for (String str : items) {
dlm1.addElement(str);
}
jl1.setModel(dlm1);
// 第二个列表框模型的内容为空
jl2.setModel(dlm2);
// 设置列表框的边框风格
jl1.setBorder(BorderFactory.createRaisedBevelBorder());
jl2.setBorder(BorderFactory.createRaisedBevelBorder());
// 添加事件监听器
jb1.addActionListener(this);
jb2.addActionListener(this);
jl1.addMouseListener(this);
jl2.addMouseListener(this);
}
// 响应单击按钮
// public void actionPerformed(ActionEvent e) {
// JButton jb = (JButton) e.getSource();
// // 如果单击第一个按钮,将第一个列表框的所选内容移到第二个列表框
// if (jb == jb1) {
// moveItem(jl1, dlm1, dlm2);
// }
// // 如果单击第二个按钮,将第二个列表框的所选内容移到第一个列表框
// else {
// moveItem(jl2, dlm2, dlm1);
// }
// }
// 在两个列表框间移动元素的函数
private void moveItem(JList jl, DefaultListModel dlmSource,
DefaultListModel dlmDest) {
// 获取当前源列表框的所选内容(允许多选)
Object[] selectedItems = jl.getSelectedValues();
// 循环遍历每个所选内容
for (Object obj : selectedItems) {
// 如果还没有添加过去,则在当前源列表框中移除,添加到目标列表框中
if (!dlmDest.contains(obj)) {
dlmSource.removeElement(obj);
dlmDest.addElement(obj);
}
}
}
// 响应鼠标单击列表框
// public void mouseClicked(MouseEvent e) {
// JList jl = (JList) e.getSource();
//
// // 如果是双击
// if (e.getClickCount() == 2) {
// // 如果单击第一个列表框,将第一个列表框的所选内容移到第二个列表框
// if (jl == jl1) {
// moveItem(jl1, dlm1, dlm2);
// }
// // 如果单击第二个列表框,将第二个列表框的所选内容移到第一个列表框
// else {
// moveItem(jl2, dlm2, dlm1);
// }
// }
// }
// public void mouseEntered1(MouseEvent e) {
// }
//
// public void mouseExited1(MouseEvent e) {
// }
//
// public void mousePressed1(MouseEvent e) {
// }
//
// public void mouseReleased1(MouseEvent e) {
// }
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
JList jl = (JList) e.getSource();
// 如果是双击
if (e.getClickCount() == 2) {
// 如果单击第一个列表框,将第一个列表框的所选内容移到第二个列表框
if (jl == jl1) {
moveItem(jl1, dlm1, dlm2);
}
// 如果单击第二个列表框,将第二个列表框的所选内容移到第一个列表框
else {
moveItem(jl2, dlm2, dlm1);
}
}
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JButton jb = (JButton) e.getSource();
// 如果单击第一个按钮,将第一个列表框的所选内容移到第二个列表框
if (jb == jb1) {
moveItem(jl1, dlm1, dlm2);
}
// 如果单击第二个按钮,将第二个列表框的所选内容移到第一个列表框
else {
moveItem(jl2, dlm2, dlm1);
}
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
public class JListWindow extends JFrame implements ActionListener {
JList jlz;// 右边框
JList jly;// 左边框
JButton jb1; // “>”按钮
JButton jb2; // “<”按钮
JButton jb3; // “>>”按钮
JButton jb4; // “<<”按钮
DefaultListModel dm;
DefaultListModel dm1;
/**
* 主方法只做调用
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JListWindow jw = new JListWindow(); // 调用JListWindow方法
}
public JListWindow() {
this.getContentPane().setLayout(null); // 设置布局为空
setTitle("用户信息管理"); // 设置标题
setBounds(100, 100, 500, 500); // 设置窗口大小及位置
this.setResizable(false); // 拒绝窗口最大化
// 添加左边框
dm = new DefaultListModel();
jlz = new JList(dm); // 建立左边框
jlz.setBounds(10, 10, 190, 450); // 设置左边框位置及大小
this.getContentPane().add(jlz); // 添加左边框至窗口
// 为左边框添加列表元素,
dm.addElement("中国");
dm.addElement("abc");
dm.addElement("123");
dm.addElement("中国123");
dm.addElement("abc123");
//添加中间按钮
jb1 = new JButton(">");
jb2 = new JButton("<");
jb3 = new JButton(">>");
jb4 = new JButton("<<");
// 设置按钮位置大小
jb1.setBounds(220, 120, 50, 30);
jb2.setBounds(220, 170, 50, 30);
jb3.setBounds(220, 220, 50, 30);
jb4.setBounds(220, 270, 50, 30);
// 添加按钮至窗口
this.getContentPane().add(jb1);
this.getContentPane().add(jb2);
this.getContentPane().add(jb3);
this.getContentPane().add(jb4);
jb1.addActionListener(this);
jb2.addActionListener(this);
jb3.addActionListener(this);
jb4.addActionListener(this);
// 添加右边框
dm1 = new DefaultListModel();
jly = new JList(dm1); // 建立右边框
jly.setBounds(290, 10, 190, 450); // 设置右边框位置及大小
this.getContentPane().add(jly); // 添加右边框至窗口
setVisible(true);//显示窗口作用
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 关闭窗口
}
/* 实现ActionListener的方法 */
// public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
/*
* “addElement”将指定组件添加到此类表的末尾; removeElement从此列表中移除参数的第一个(索引最小的)匹配项
*/
// dm1.addElement(jlz.getSelectedValue());// 将左列表中选中的元素添加至右列表
// dm.removeElement(jlz.getSelectedValue());// 移除做列表中添加至右列表的元素
// dm.addElement(jly.getSelectedValue());// 将右列表中选中的元素添加至左列表
// dm1.removeElement(jly.getSelectedValue());// 移除右列表中添加至左列表的元素
//dm1.addElement(jlz.getSelectionMode());
// dm.removeElement(jlz.getSelectionMode());
// }
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
dm1.addElement(jlz.getSelectedValue());// 将左列表中选中的元素添加至右列表
dm.removeElement(jlz.getSelectedValue());// 移除做列表中添加至右列表的元素
dm.addElement(jly.getSelectedValue());// 将右列表中选中的元素添加至左列表
dm1.removeElement(jly.getSelectedValue());// 移除右列表中添加至左列表的元素
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
public class OILSYSList extends JPanel {
private static final long serialVersionUID = 1L;
private JButton but[];
private JPanel jPanel = null; // @jve:decl-index=0:visual-constraint="51,44"
private JLabel jLabel1 = null;
private JLabel jLabel2 = null;
private JList jList = null;
private JList jList2 = null;
private JLabel jLabel3 = null;
private JLabel jLabel4 = null;
public JScrollPane scrollPane = null;
public JScrollPane scrollPane2 = null;
List list = null;
List list2 = null;
private String[] str = { "aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh",
"ii", "jj", "kk", "ll" };
private String[] str2 = { "11", "22", "33", "44", "55", "66", "77", "88",
"99", "00", "12", "13" };
DefaultListModel model1, model2;
/**
* This method initializes jPanel
*
* @return javax.swing.JPanel
*/
public OILSYSList() {
list = GetList();
list2 = GetList();
Collections.sort(list);
Collections.sort(list2);
this.setLayout(null);
//this.setBounds(new Rectangle(100,100,500,300));
jLabel4 = new JLabel();
jLabel4.setBounds(new Rectangle(328, 84, 126, 18));
jLabel4.setText("products selected");
jLabel3 = new JLabel();
jLabel3.setBounds(new Rectangle(66, 84, 126, 18));
jLabel3.setText("all products");
jLabel2 = new JLabel();
jLabel2.setBounds(new Rectangle(40, 44, 128, 18));
jLabel2.setHorizontalAlignment(SwingConstants.CENTER);
jLabel2.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel2.setText("content");
jLabel1 = new JLabel();
jLabel1.setBounds(new Rectangle(148, 13, 217, 18));
jLabel1.setHorizontalAlignment(SwingConstants.CENTER);
jLabel1.setHorizontalTextPosition(SwingConstants.CENTER);
jLabel1.setText("title");
jPanel = new JPanel();
jPanel.setLayout(null);
jPanel.setSize(new Dimension(519, 305));
// jPanel.setBackground(Color.white);
jPanel.add(jLabel1, null);
jPanel.add(jLabel2, null);
jPanel.add(jLabel3, null);
jPanel.add(jLabel4, null);
model1 = new DefaultListModel();
jList = new JList(model1);
jList.setBounds(new Rectangle(0, 0, 126, 152));
for (int i = 0; i < list.size(); i++) {
Object s = list.get(i);
model1.addElement(s);
}
scrollPane = new JScrollPane(jList);
scrollPane.setBackground(Color.LIGHT_GRAY);
scrollPane.setBounds(new Rectangle(66, 101, 126, 152));
model2 = new DefaultListModel();
jList2 = new JList(model2);
jList2.setBounds(new Rectangle(0, 0, 126, 152));
for (int i = 0; i < list2.size(); i++) {
Object s = list2.get(i);
model2.addElement(s);
}
scrollPane2 = new JScrollPane(jList2);
scrollPane2.setBackground(Color.LIGHT_GRAY);
scrollPane2.setBounds(new Rectangle(335, 101, 126, 152));
jPanel.add(scrollPane, null);
jPanel.add(scrollPane2, null);
but = new JButton[2];
but[0] = new JButton();
but[0].setBounds(new Rectangle(225, 132, 72, 24));
but[0].setHorizontalTextPosition(SwingConstants.CENTER);
but[0].setText(">");
but[1] = new JButton();
but[1].setBounds(new Rectangle(227, 197, 72, 24));
but[1].setHorizontalTextPosition(SwingConstants.CENTER);
but[1].setText("<");
for (int i = 0; i < but.length; i++) {
but[i].addActionListener(new Handler());
}
jPanel.add(but[0], null);
jPanel.add(but[1], null);
this.add(jPanel);
}
public List GetList() {
List list = new ArrayList();
list.clear();
list.add("aa");
list.add("bb");
list.add("vv");
list.add("ss");
list.add("dd");
list.add("xx");
list.add("cc");
list.add("zz");
list.add("ee");
list.add("ww");
list.add("qq");
list.add("tt");
list.add("yy");
list.add("uu");
return list;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JFrame f = new JFrame();
f.setSize(new Dimension(1024, 660));
OILSYSList p = new OILSYSList();
p.setBounds(new Rectangle(500,100,500,300));
f.add(p, null);
f.setVisible(true);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
class Handler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == but[0]) {
while (!jList.isSelectionEmpty()) {
list2.add(jList.getSelectedValue());
list.remove(jList.getSelectedValue());
Collections.sort(list);
Collections.sort(list2);
model2.removeAllElements();
model1.removeAllElements();
for (int i = 0; i < list2.size(); i++) {
model2.addElement(list2.get(i));
}
for (int i = 0; i < list.size(); i++) {
model1.addElement(list.get(i));
}
}
}
if (e.getSource() == but[1]) {
while (!jList2.isSelectionEmpty()) {
list.add(jList2.getSelectedValue());
list2.remove(jList2.getSelectedValue());
Collections.sort(list);
Collections.sort(list2);
model2.removeAllElements();
model1.removeAllElements();
for (int i = 0; i < list2.size(); i++) {
model2.addElement(list2.get(i));
}
for (int i = 0; i < list.size(); i++) {
model1.addElement(list.get(i));
}
}
}
}
}
}
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
import java.awt.BorderLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
public class testt {
public static void main(String[] args) {
ListFrame1 f = new ListFrame1();
f.setSize(600, 400);
f.setTitle("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
class ListFrame1 extends JFrame {
/**
*
*/
private static final long serialVersionUID = 1L;
private int first;
private int sec;
public ListFrame1() {
JPanel panel = new JPanel();
this.getContentPane().add(panel, BorderLayout.CENTER);
final DefaultListModel m = new DefaultListModel ();
m.addElement("Attt");
m.addElement("Bttt");
m.addElement("Ctttt");
m.addElement("dtttt");
final JList list = new JList(m);
list.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
first = list.locationToIndex(e.getPoint());
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
sec = list.locationToIndex(e.getPoint());
if ( sec != -1) {
if ( first != sec ) {
String s1 = m.getElementAt(first).toString();
String s2 = m.getElementAt(sec).toString();
m.setElementAt(s1, sec);
m.setElementAt(s2, first);
list.clearSelection();
}
}
}
});
panel.add(list);
}
}