文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在JTable单元格中如何实现可选择的JComboBox

2023-06-03 01:39

关注

本篇文章给大家分享的是有关在JTable单元格中如何实现可选择的JComboBox,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在JTable单元格中实现可选择的JComboBox,经典例子源码(如设置性别)[@more@]性别的例子,使用方法如下:  
       TableColumnModel   tcm   =   table.getColumnModel();  
       TableColumn   tc   =   tcm.getColumn(genderColumn);//   genderColumn为你的性别的例序号。  
       tc.setCellRenderer(new   GenderRenderer());  
       tc.setCellEditor(new   GenderEditor());  
 限制如下,该列类型为boolean。  
   
   
 import   java.awt.Component;  
 import   java.util.EventObject;  
 import   java.awt.event.*;  
 import   javax.swing.*;  
 import   javax.swing.event.*;  
 import   javax.swing.table.*;  
   
 public   class   GenderEditor   extends   JComboBox   implements   TableCellEditor   {  
   
     protected   EventListenerList   listenerList   =   new   EventListenerList();  
     protected   ChangeEvent   changeEvent   =   new   ChangeEvent(this);  
   
     public   GenderEditor()   {  
         super();  
         addItem("Male");  
         addItem("Female");  
         addActionListener(new   ActionListener()   {  
             public   void   actionPerformed(ActionEvent   event)   {  
                 fireEditingStopped();  
             }    
         });  
     }  
   
     public   void   addCellEditorListener(CellEditorListener   listener)   {  
         listenerList.add(CellEditorListener.class,   listener);  
     }    
   
     public   void   removeCellEditorListener(CellEditorListener   listener)   {  
         listenerList.remove(CellEditorListener.class,   listener);  
     }    
   
     protected   void   fireEditingStopped()   {  
         CellEditorListener   listener;  
         Object[]   listeners   =   listenerList.getListenerList();  
         for   (int   i   =   0;   i   <   listeners.length;   i++)   {  
             if   (listeners[i]   ==   CellEditorListener.class)   {  
                 listener   =   (CellEditorListener)listeners[i   +   1];  
                 listener.editingStopped(changeEvent);  
             }    
         }    
     }    
   
     protected   void   fireEditingCanceled()   {  
         CellEditorListener   listener;  
         Object[]   listeners   =   listenerList.getListenerList();  
         for   (int   i   =   0;   i   <   listeners.length;   i++)   {  
             if   (listeners[i]   ==   CellEditorListener.class)   {  
                 listener   =   (CellEditorListener)listeners[i   +   1];  
                 listener.editingCanceled(changeEvent);  
             }    
         }    
     }    
   
     public   void   cancelCellEditing()   {  
         fireEditingCanceled();  
     }    
   
     public   boolean   stopCellEditing()   {  
         fireEditingStopped();  
         return   true;  
     }    
   
     public   boolean   isCellEditable(EventObject   event)   {  
         return   true;  
     }    
   
     public   boolean   shouldSelectCell(EventObject   event)   {  
         return   true;  
     }    
   
     public   Object   getCellEditorValue()   {  
         return   new   Boolean(getSelectedIndex()   ==   0   ?   true   :   false);  
     }    
   
     public   Component   getTableCellEditorComponent(JTable   table,    
                     Object   value,   boolean   isSelected,   int   row,   int   column)   {  
         boolean   isMale   =   ((Boolean)value).booleanValue();  
         setSelectedIndex(isMale   ?   0   :   1);  
         return   this;  
     }    
   
 }  
   
   
   
 import   java.awt.Component;  
 import   javax.swing.JComboBox;  
 import   javax.swing.JTable;  
 import   javax.swing.table.TableCellRenderer;  
   
 public   class   GenderRenderer   extends   JComboBox   implements   TableCellRenderer   {  
   
     public   GenderRenderer()   {  
         super();  
         addItem("Male");  
         addItem("Female");  
     }  
   
     public   Component   getTableCellRendererComponent(JTable   table,    
                     Object   value,   boolean   isSelected,   boolean   hasFocus,    
                     int   row,   int   column)   {  
   
         if   (isSelected)   {  
             setForeground(table.getSelectionForeground());  
             super.setBackground(table.getSelectionBackground());  
         }   else   {  
             setForeground(table.getForeground());  
             setBackground(table.getBackground());  
         }    
   
         boolean   isMale   =   ((Boolean)value).booleanValue();  
         setSelectedIndex(isMale   ?   0   :   1);  
         return   this;  
     }    
   
 }  

以上就是在JTable单元格中如何实现可选择的JComboBox,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯