Java Swing中检查框如何嵌入到列表框中?

也就是JList中添加的每一项都是JCheckBox,并能使程序取得其中每一项的选中状态。麻烦你贴出代码好吗?... 也就是JList中添加的每一项都是JCheckBox,并能使程序取得其中每一项的选中状态。
麻烦你贴出代码好吗?
展开
 我来答
chenxinppoo
2009-08-05 · TA获得超过606个赞
知道小有建树答主
回答量:286
采纳率:100%
帮助的人:205万
展开全部

兄弟实现这个技术真的好难!因为JList没有像JTable那样的编辑器。而只有绘制器。所以再JList中还必须加上事件才能实现选中状态的效果。如果你想添加的是下拉列表框那我就没办法了!(估计JList不能实现)代码我已经给你写好了,没有加注释。用了三个内部类。如果你有什么问题就问我,我QQ:316378193

代码如下:

import java.awt.*;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import java.util.Random;

import javax.swing.*;

public class Test extends JFrame {

 private static final long serialVersionUID = 1L;

 private FreeList list;

 public Test() {

  list = new FreeList();

  setLayout(new GridLayout(1, 1));

  getContentPane().add(list);

  setSize(400, 500);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  setVisible(true);

 }

 private class FreeList extends JList implements MouseListener{

  private static final long serialVersionUID = 1L;

  private DefaultListModel model;

  private Random random;

  private CellRenderer cell;

  public FreeList() {

   model = new DefaultListModel();

   cell = new CellRenderer();

   random = new Random();

   for (int i = 0; i < 10; i++) {   

    int a = random.nextInt(9999999);

    CheckBox box=new CheckBox(a);

    model.add(i, box);

   }

   setModel(model);

   setCellRenderer(cell);

   addMouseListener(this);

  }

  @Override

  public void mouseClicked(MouseEvent arg0) {

   // TODO Auto-generated method stub

   Object temp=this.getSelectedValue();

   JCheckBox selectBox=(JCheckBox)temp;

   if(selectBox.isSelected()) {

    selectBox.setSelected(false);

   }

   else {

    selectBox.setSelected(true);

   }

   repaint();

  }

  @Override

  public void mouseEntered(MouseEvent arg0) {

  }

  @Override

  public void mouseExited(MouseEvent arg0) {  

  }

  @Override

  public void mousePressed(MouseEvent arg0) { 

  }

  @Override

  public void mouseReleased(MouseEvent arg0) {

  }

 }

 

 private class CheckBox extends JCheckBox {

  

  private int number;

  

  public CheckBox(int number) {

   super();

   this.number=number;

  }

  

  public String toString() {

   return String.valueOf(number);

  }

 }

 private class CellRenderer implements ListCellRenderer {

  private JCheckBox box;

  @Override

  public Component getListCellRendererComponent(JList arg0, Object arg1,

    int arg2, boolean arg3, boolean arg4) {

   // TODO Auto-generated method stub

   box = new JCheckBox();

   box.setText(arg1.toString());

   if (arg3) {

    box.setBackground(Color.BLUE);

   } else {

    box.setBackground(Color.WHITE);

   }

   JCheckBox selectBox=(JCheckBox)arg1;

   box.setSelected(selectBox.isSelected());

   return box;

  }

 }

 public static void main(String[] args) {

  // TODO Auto-generated method stub

  new Test();

 }

}

seekfor_
2009-08-04 · TA获得超过371个赞
知道小有建树答主
回答量:170
采纳率:66%
帮助的人:182万
展开全部
做这个代码有点长。。。
你可以参考《Swing Hacks》这本书,其中的hack 15和你的需求完全一样。。。
网上都有的下载的,http://www.itpub.net/436548.html看看吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式