JList使用说明

import java.awt.BorderLayout;
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);        
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值