java jlist checkbox_JList中使用JCheckBox示例

JList中使用JCheckBox示例

(2014-06-20 14:21:45)

标签:

教育

it

package JList;

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)";

}

}

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JListJava Swing 组件的一个列表组件,可以用来展示一组数据。以下是 JList 的用法: 1. 创建 JList 对象: ``` JList list = new JList(); ``` 2. 设置数据模型: JList 组件需要一个数据模型来存储数据,可以使用 DefaultListModel 类来创建数据模型: ``` DefaultListModel model = new DefaultListModel(); model.addElement("Item 1"); model.addElement("Item 2"); list.setModel(model); ``` 3. 设置显示样式: 可以通过设置 ListCellRenderer 对象来改变每个列表项的显示样式: ``` list.setCellRenderer(new MyListRenderer()); ``` 4. 添加到容器: 将 JList 添加到容器即可显示出来: ``` JScrollPane scrollPane = new JScrollPane(list); frame.getContentPane().add(scrollPane); ``` 完整示例代码: ``` import javax.swing.DefaultListModel; import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ListCellRenderer; public class MyListRenderer implements ListCellRenderer<String> { public static void main(String[] args) { JFrame frame = new JFrame(); JList<String> list = new JList<String>(); DefaultListModel<String> model = new DefaultListModel<String>(); model.addElement("Item 1"); model.addElement("Item 2"); list.setModel(model); list.setCellRenderer(new MyListRenderer()); JScrollPane scrollPane = new JScrollPane(list); frame.getContentPane().add(scrollPane); frame.pack(); frame.setVisible(true); } public MyListRenderer() { } @Override public Component getListCellRendererComponent(JList<? extends String> list, String value, int index, boolean isSelected, boolean cellHasFocus) { JLabel label = new JLabel(); label.setText(value); if (isSelected) { label.setBackground(list.getSelectionBackground()); label.setForeground(list.getSelectionForeground()); } else { label.setBackground(list.getBackground()); label.setForeground(list.getForeground()); } label.setOpaque(true); return label; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值