package JList;
/**
CheckBoxList
*/
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
import javax.swing.UIManager;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
public class MyJList extends JFrame {
protected JList m_list;
protected JLabel m_total;
public MyJList() {
super("Swing List [Check boxes]");
setSize(260, 240);
getContentPane().setLayout(new FlowLayout());
InstallData[] options = { new InstallData("Program executable", 118),
new InstallData("Help files", 52),
new InstallData("Tools and converters", 83),
new InstallData("Source code", 133) };
m_list = new JList(options);
CheckListCellRenderer renderer = new CheckListCellRenderer();
m_list.setCellRenderer(renderer);
m_list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
CheckListener lst = new CheckListener(this);
m_list.addMouseListener(lst);
m_list.addKeyListener(lst);
JScrollPane ps = new JScrollPane();
ps.getViewport().add(m_list);
m_total = new JLabel("Space required: 0K");
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(ps, BorderLayout.CENTER);
p.add(m_total, BorderLayout.SOUTH);
p.setBorder(new TitledBorder(new EtchedBorder(),
"Please select options:"));
getContentPane().add(p);
WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wndCloser);
setVisible(true);
recalcTotal();
}
public void recalcTotal() {
ListModel model = m_list.getModel();
int total = 0;
for (int k = 0; k < model.getSize(); k++) {
InstallData data = (InstallData) model.getElementAt(k);
if (data.isSelected())
total += data.getSize();
}
m_total.setText("Space required: " + total + "K");
}
public static void main(String argv[]) {
new MyJList();
}
}
class CheckListCellRenderer extends JCheckBox implements ListCellRenderer {
protected static Border m_noFocusBorder = new EmptyBorder(1, 1, 1, 1);
public CheckListCellRenderer() {
super();
setOpaque(true);
setBorder(m_noFocusBorder);
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
setText(value.toString());
setBackground(isSelected ? list.getSelectionBackground() : list
.getBackground());
setForeground(isSelected ? list.getSelectionForeground() : list
.getForeground());
InstallData data = (InstallData) value;
setSelected(data.isSelected());
setFont(list.getFont());
setBorder((cellHasFocus) ? UIManager
.getBorder("List.focusCellHighlightBorder") : m_noFocusBorder);
return this;
}
}
class CheckListener implements MouseListener, KeyListener {
protected MyJList m_parent;
protected JList m_list;
public CheckListener(MyJList parent) {
m_parent = parent;
m_list = parent.m_list;
}
public void mouseClicked(MouseEvent e) {
if (e.getX() < 20)
doCheck();
}
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
}
public void mouseExited(MouseEvent e) {
}
public void keyPressed(KeyEvent e) {
if (e.getKeyChar() == ' ')
doCheck();
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
protected void doCheck() {
int index = m_list.getSelectedIndex();
if (index < 0)
return;
InstallData data = (InstallData) m_list.getModel().getElementAt(index);
data.invertSelected();
m_list.repaint();
m_parent.recalcTotal();
}
}
public class InstallData {
protected String m_name;
protected int m_size;
protected boolean m_selected;
public InstallData(String name, int size) {
m_name = name;
m_size = size;
m_selected = false;
}
public String getName() {
return m_name;
}
public int getSize() {
return m_size;
}
public void setSelected(boolean selected) {
m_selected = selected;
}
public void invertSelected() {
m_selected = !m_selected;
}
public boolean isSelected() {
return m_selected;
}
public String toString() {
return m_name + " (" + m_size + " K)";
}
}
分享到:
相关推荐
这是我之前做的一个项目要实现的一个功能,Jlist 动态添加删除移动Jcheckbox
构造函数中传递String数组给JList添加内容,同时给JList添加滚动条。
文档中介绍了JList控件的简单使用方法,包括对列表点击事件的处理。
swing中的jlist 代码中定义了两个jlist 从一个jlist双击列表项可以将该项从这个列表删除并添加至另外一个列表中去
JLIst的使用,主要是介绍基础
JList是Swing库提供的一个用于显示列表数据的组件,它可以显示单个或多个项目,并且允许用户进行选择操作。
jlist应用例子,JLIST应用例子,移动举例
关于java中jlist的一些用法,。。
使用JList 显示图片并动态改变显示的图片!
主要介绍了Java Swing中JList选择事件监听器ListSelectionListener用法,结合具体实例形式分析了中JList选择事件监听器ListSelectionListener的功能、使用方法及相关注意事项,需要的朋友可以参考下
JList多选值的获取, 由JList组件实现的列表框有3种选取模式,设置方法为通过JList类的setSelectionMode(int selectionMode)方法,该方法的入口参数可以通过ListSelectionModel类中的静态常量设置。
JList 上下左右拖动,例子说明.上下左右拖动
java构建几种个性的JList,可以用图片,可以拖动JList控件
JList事件监听器方法实现代码
在JList列表框 中盛放 CheckBox复选框,并可以实现列表中的项上下移动和鼠标拖动列表项进行移动,可以直接运行
自定义的JList,像android的ListView,可以点击按钮后马上删除当前条,并即时显示最新数据,有点数据驱动UI的感觉。Swing自定义控件必备。
javaswing更酷的Jlist.pdf
swing JList 拖拽记录到 JTable
重新实现了CellRenderer,可同时显示图片和文字