zoukankan      html  css  js  c++  java
  • 怎么在JTable表格中把列做成单选框

    1、重写一个单元格渲染类

    public class CheckBoxRenderer extends JCheckBox implements TableCellRenderer {
    		private static final long serialVersionUID = 1L;
    		Border border = new EmptyBorder(1, 2, 1, 2);
    		public CheckBoxRenderer() {
    			super();
    			setOpaque(true);
    			setHorizontalAlignment(SwingConstants.CENTER);
    			setBackground(Color.WHITE);
    		}
    		public CheckBoxRenderer(String text, boolean selected) {
    			super(text, selected);
    			setOpaque(true);
    			setHorizontalAlignment(SwingConstants.CENTER);
    			setBackground(Color.WHITE);
    		}
    		@Override
    		public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
    				int row, int column) {
    			if (value instanceof Boolean) {
    				setSelected(((Boolean) value).booleanValue());
    			}
    			return this;
    		}
    	}
    

    2、重写单元格编辑类

    class CheckBoxCellEditor extends AbstractCellEditor implements TableCellEditor {
    		private static final long serialVersionUID = 1L;
    		protected JCheckBox checkBox;
    		public CheckBoxCellEditor() {
    			checkBox = new JCheckBox();
    			checkBox.setHorizontalAlignment(SwingConstants.CENTER);
    			checkBox.addActionListener(new ActionListener() {
    				@Override
    				public void actionPerformed(ActionEvent e) {
    
    				}
    			});
    		}
    		@Override
    		public Object getCellEditorValue() {
    			return Boolean.valueOf(checkBox.isSelected());
    		}
    		@Override
    		public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
    				int column) {
    			if (value != null) {
    				checkBox.setSelected(((Boolean) value).booleanValue());
    			}
    			return checkBox;
    		}
    	}
    

    3、给列添加渲染类和编辑类

    CheckBoxRenderer checkBoxRenderer  = new CheckBoxRenderer();
    CheckBoxCellEditor checkBoxCellEditor = new CheckBoxCellEditor();
    table.getColumnModel().getColumn(5).setCellRenderer(checkBoxRenderer);
    table.getColumnModel().getColumn(5).setCellEditor(checkBoxCellEditor);
    

      

  • 相关阅读:
    显示和隐藏密码
    如何给input的右上角加个清除的按钮?
    手机号中间四位用*号代替
    利用JS+正则表达式获取URL的GET数据
    腾讯QQ头像/QQ网名等相关获取API接口
    jqurey 在编辑的时候为select设置选中项
    html面试题
    js splice和delete删除数组长度会变化吗
    webp与jpg、png比较,它有什么优劣势?如何选择?
    iOS开发技术之应用代码注入防护
  • 原文地址:https://www.cnblogs.com/wwssgg/p/14580463.html
Copyright © 2011-2022 走看看