ListCheckBox如何设置选中啊。着急!分不够再加~ 如题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 import javax.swing.JList;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*; public class CheckListBox extends JList { //这个boolean数组装载所有item是否被check的信息。 private static final long serialVersionUID = 185589712699329969L; private boolean[] checkedItems = null; /** * 定义一个简单的ListModel,它可以发送check变化事件。 */ class CheckListBoxModel extends AbstractListModel { private Object[] items = null; CheckListBoxModel(Object[] items) { this.items = items; } public int getSize() { return items.length; } public Object getElementAt(int i) { return items[i]; } protected void fireCheckChanged(Object source, int index) { fireContentsChanged(source, index, index); } public Object getItem(int index) { return items[index]; } } /** * 这里就覆盖了一个构造函数。其他JList你自己覆盖吧,反正super一下再init就OK了。 * @param items Object[] */ public CheckListBox(Object[] items) { setModel(new CheckListBoxModel(items)); init(); } /** * 初始化控件。包括初始化boolean数组、安装一个渲染器、安装一个鼠标监听器。 */ protected void init() { checkedItems = new boolean[this.getModel().getSize()]; class MyCellRenderer extends JCheckBox implements ListCellRenderer { public MyCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { //这点代码基本上从DefaultListCellRenderer.java中抄袭的。 setComponentOrientation(list.getComponentOrientation()); if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } if (value instanceof Icon) { setIcon( (Icon) value); setText(""); } else { setIcon(null); setText( (value == null) ? "" : value.toString()); } setEnabled(list.isEnabled()); setFont(list.getFont()); //虽然抄袭,可这里别忘了设置check信息。 this.setSelected(isChecked(index)); return this; } } this.setCellRenderer(new MyCellRenderer()); //定义一个鼠标监听器。如果点击某个item,翻转其check状态。 class CheckBoxListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { int index = locationToIndex(e.getPoint()); invertChecked(index); } } this.addMouseListener(new CheckBoxListener()); } /** * 翻转指定item的check状态。 * @param index int */ public void invertChecked(int index) { checkedItems[index] = !checkedItems[index]; //别忘了发送event。 CheckListBoxModel model = (CheckListBoxModel) getModel(); model.fireCheckChanged(this, index); this.repaint(); } /** * 是否指定item被check。 * @param index int * @return boolean */ public boolean isChecked(int index) { return checkedItems[index]; } /** * 获得选中的item个数 */ public int getCheckedCount() { int result = 0; for (int i = 0; i < checkedItems.length; i++) { if (checkedItems[i]) { result++; } } return result; } /** * 所有选中item索引的数组。 */ public int[] getCheckedIndices() { int[] result = new int[getCheckedCount()]; int index = 0; for (int i = 0; i < checkedItems.length; i++) { if (checkedItems[i]) { result[index] = i; index++; } } return result; } public static void main(String[] args) { JFrame frame = new JFrame("JCheckListBox - [email protected]"); final CheckListBox list = new CheckListBox(new Object[] {"张三", "李四", "王二麻子", "木头六"}); frame.getContentPane().add(new JScrollPane(list), BorderLayout.CENTER); JButton button = new JButton("OK"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); frame.getContentPane().add(button, BorderLayout.SOUTH); final JLabel label = new JLabel("当前没有选择。"); list.getModel().addListDataListener(new ListDataListener() { public void intervalAdded(ListDataEvent e) {} public void intervalRemoved(ListDataEvent e) {} public void contentsChanged(ListDataEvent e) { if (list.getCheckedCount() == 0) { label.setText("当前没有选择。"); } else { String text = "当前选择:"; int[] indices = list.getCheckedIndices(); for (int i = 0; i < indices.length; i++) { text += ( (CheckListBoxModel) list.getModel()).getItem(indices[i]).toString() + ","; } label.setText(text); } } }); frame.getContentPane().add(label, BorderLayout.NORTH); frame.setBounds(300, 300, 400, 200); frame.show(); }} 我把代码发出来了。大家看下。现在checkBox选上了。我如何设置checkBox不选~~ java SWT如何在母面板中获取子控件及其值 鼠标适配器问题,求指教,错在哪里怎么改? 反推公式 MyActionForm myActionForm = (MyActionForm) form; 这句话是什么意思? JFileChoser 问题 大家帮忙啊 谢谢!!!!!!!!!!! "|" 判断NULL 和BOOLEAN时候如何判断呢 请教个问题 挖哈哈.爬上三座山了.散分带问问题. 如何在服务器和客户机之间传递一个对象的实例?各位高手请指点。 为啥报错字符串与byte问题 e急,菜鸟问,简单问题,给分了!!!!!!! 为什么aninal A =new dog();
private boolean[] checkedItems = null; /** * 定义一个简单的ListModel,它可以发送check变化事件。 */ class CheckListBoxModel extends AbstractListModel { private Object[] items = null; CheckListBoxModel(Object[] items) { this.items = items; } public int getSize() { return items.length; } public Object getElementAt(int i) { return items[i]; } protected void fireCheckChanged(Object source, int index) { fireContentsChanged(source, index, index); } public Object getItem(int index) { return items[index]; } } /** * 这里就覆盖了一个构造函数。其他JList你自己覆盖吧,反正super一下再init就OK了。 * @param items Object[] */ public CheckListBox(Object[] items) { setModel(new CheckListBoxModel(items)); init(); } /** * 初始化控件。包括初始化boolean数组、安装一个渲染器、安装一个鼠标监听器。 */ protected void init() { checkedItems = new boolean[this.getModel().getSize()]; class MyCellRenderer extends JCheckBox implements ListCellRenderer { public MyCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent( JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { //这点代码基本上从DefaultListCellRenderer.java中抄袭的。 setComponentOrientation(list.getComponentOrientation()); if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } if (value instanceof Icon) { setIcon( (Icon) value); setText(""); } else { setIcon(null); setText( (value == null) ? "" : value.toString()); } setEnabled(list.isEnabled()); setFont(list.getFont()); //虽然抄袭,可这里别忘了设置check信息。 this.setSelected(isChecked(index)); return this; } } this.setCellRenderer(new MyCellRenderer()); //定义一个鼠标监听器。如果点击某个item,翻转其check状态。 class CheckBoxListener extends MouseAdapter { public void mouseClicked(MouseEvent e) { int index = locationToIndex(e.getPoint()); invertChecked(index); } } this.addMouseListener(new CheckBoxListener()); } /** * 翻转指定item的check状态。 * @param index int */ public void invertChecked(int index) { checkedItems[index] = !checkedItems[index]; //别忘了发送event。 CheckListBoxModel model = (CheckListBoxModel) getModel(); model.fireCheckChanged(this, index); this.repaint(); } /** * 是否指定item被check。 * @param index int * @return boolean */ public boolean isChecked(int index) { return checkedItems[index]; } /** * 获得选中的item个数 */ public int getCheckedCount() { int result = 0; for (int i = 0; i < checkedItems.length; i++) { if (checkedItems[i]) { result++; } } return result; } /** * 所有选中item索引的数组。 */ public int[] getCheckedIndices() { int[] result = new int[getCheckedCount()]; int index = 0; for (int i = 0; i < checkedItems.length; i++) { if (checkedItems[i]) { result[index] = i; index++; } } return result; } public static void main(String[] args) { JFrame frame = new JFrame("JCheckListBox - [email protected]"); final CheckListBox list = new CheckListBox(new Object[] {"张三", "李四", "王二麻子", "木头六"}); frame.getContentPane().add(new JScrollPane(list), BorderLayout.CENTER); JButton button = new JButton("OK"); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); frame.getContentPane().add(button, BorderLayout.SOUTH); final JLabel label = new JLabel("当前没有选择。"); list.getModel().addListDataListener(new ListDataListener() { public void intervalAdded(ListDataEvent e) {} public void intervalRemoved(ListDataEvent e) {} public void contentsChanged(ListDataEvent e) { if (list.getCheckedCount() == 0) { label.setText("当前没有选择。"); } else { String text = "当前选择:"; int[] indices = list.getCheckedIndices(); for (int i = 0; i < indices.length; i++) { text += ( (CheckListBoxModel) list.getModel()).getItem(indices[i]).toString() + ","; } label.setText(text); } } }); frame.getContentPane().add(label, BorderLayout.NORTH); frame.setBounds(300, 300, 400, 200); frame.show(); }}