CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

在JList里加CHECKBOX

楼主ys_zou(疯狗)2002-11-22 13:51:13 在 Java / J2SE / 基础类 提问

在JList里加CHECKBOX 问题点数:100、回复次数:1Top

1 楼disk(晚上看太阳,我靠怎想的,做梦去吧^_&)回复于 2002-11-22 13:54:56 得分 100

import   java.awt.*;  
  import   java.awt.event.*;  
  import   java.util.*;  
   
  import   javax.swing.*;  
  import   javax.swing.border.*;  
  import   javax.swing.event.*;  
   
  public   class   CheckBoxList    
  extends   JFrame    
  {  
   
  protected   JList     m_list;  
  protected   JLabel   m_total;  
   
  public   CheckBoxList()  
  {  
  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   CheckBoxList();  
  }  
  }  
   
  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   CheckBoxList   m_parent;  
  protected   JList   m_list;  
   
  public   CheckListener(CheckBoxList   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();  
  }  
  }  
   
  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)";   }  
  }  
   
  Top

相关问题

  • 在树里加CHECKBOX
  • 在xloadtree里加checkbox
  • ListCtrl里加checkbox,
  • c# winform DataGridTextBoxColumn里加入CheckBox 问题???
  • pb在哪里加入toolbar?
  • 我想在DATAGRID里加入一列CHECKBOX,然后可以删除被选中的记录。 具体怎么做?
  • 我想在DATAGRID里加入一列CHECKBOX,然后可以删除被选中的记录。 具体怎么做?
  • 怎样在ToolBar里加控件??
  • 怎样在视图里加载ActiveX?
  • 怎么在CButton里加入一副图:)

关键词

  • swing
  • installdata
  • jlist
  • lst
  • javax
  • list
  • import

得分解答快速导航

  • 帖主:ys_zou
  • disk

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo