Swing中JList的使用

java用swing做GUI好处就是快,拖拖点点,一个 GUI 界面就出来了,用于做一些GUI小工具。

JList的使用

记得在拖JList之前,加上一个scrollPanel

一般步骤:

  • JList<Object> list = new JList<Object>(); 新建一个JList的成员变量。
  • 新建一个继承于AbstractListModel<T>的领域列表对象,代表JList中要装的什么东西。
  • list.setModel(model);关联GUI与model数据列表对象。
  • 在新增数据的按钮事件处理中更新model列表对象,再调用list.updateUI();更新显示数据。
  • 在要获取List中数据的按钮事件中int index = list.getSelectedIndex();获取选中的项,用list.getModel().getElementAt(index);来获取对象。
  • 增加ListSelectionListener的事件,选处理list的选中事件。

model对象的使用

一个典型的写法,在这个类中可自行添加增加数据的方法。
JList的UI上显示的是这个Object的toString方法内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class XxModel extends AbstractListModel<Object> {

List<Object> list = new ArrayList<Object>();
@Override
public int getSize() {
return list.size();
}

@Override
public Object getElementAt(int index) {
return list.get(index);
}
}

典型按钮操作JList处理方式

1
2
3
4
5
6
7
8
9
10
11
JButton button_3 = new JButton("xx功能");
button_3.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int select = list.getSelectedIndex();
if(select !=-1)
{
Object bean = model.getElementAt(select);
textField_1.setText(bean.toString());
}
}
});

典型JList选中事件处理方式

1
2
3
4
5
6
7
8
9
10
11
12
list.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if(e.getValueIsAdjusting())
{
JList<Object> list = (JList<Object>)e.getSource();
int index = list.getSelectedIndex();
ListModel<Object> model = list.getModel();
Object bean = (Object)model.getElementAt(index);
//TODO bean
}
}
});

还会常用的其它组件

  • JOptionPane.showMessageDialog(null,"tip"); 显示提示信息
  • 访问剪贴版
    1
    2
    3
    4
    5
    6
    // 获取系统剪贴板
    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    // 封装文本内容
    Transferable trans = new StringSelection(text);
    // 把文本内容设置到系统剪贴板
    clipboard.setContents(trans, null);
  • 访问剪贴版上的图片,见gist上上传图片示例
  • 获取根组件SwingUtilities.getRoot
  • 弹出模态对话框new Dialog(null,"",Dialog.ModalityType.APPLICATION_MODAL,model);

Swing中JList的使用
https://blog.fengcl.com/2018/08/28/swing-jlist/
作者
frank
发布于
2018年8月28日
许可协议