首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尽管实现了"getColumnClass“,但JTable仍显示true/false而不是CheckBox

问题描述:尽管实现了"getColumnClass",但JTable仍显示true/false而不是CheckBox。

解决方案: 在JTable中显示CheckBox而不是true/false值,需要进行以下步骤:

  1. 实现getColumnClass方法:在TableModel中重写getColumnClass方法,返回对应列的数据类型。
代码语言:txt
复制
@Override
public Class<?> getColumnClass(int columnIndex) {
    if (columnIndex == yourCheckBoxColumnIndex) {
        return Boolean.class;
    } else {
        return super.getColumnClass(columnIndex);
    }
}
  1. 设置TableCellRenderer:创建一个自定义的TableCellRenderer来渲染CheckBox。可以使用DefaultTableCellRenderer或自定义的TableCellRenderer。
代码语言:txt
复制
class CheckBoxRenderer extends DefaultTableCellRenderer {
    private static final long serialVersionUID = 1L;

    public CheckBoxRenderer() {
        super();
        setHorizontalAlignment(JLabel.CENTER); // 居中显示CheckBox
    }

    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
        JCheckBox checkBox = new JCheckBox();
        checkBox.setSelected((boolean) value); // 设置CheckBox选中状态
        return checkBox;
    }
}
  1. 设置TableCellEditor(可选):如果需要允许用户编辑CheckBox,可以创建一个自定义的TableCellEditor来处理用户的编辑事件。
代码语言:txt
复制
class CheckBoxEditor extends DefaultCellEditor {
    private static final long serialVersionUID = 1L;

    public CheckBoxEditor() {
        super(new JCheckBox());
    }
}
  1. 应用渲染器和编辑器:在创建JTable时,将自定义的TableCellRenderer和TableCellEditor应用到对应的列上。
代码语言:txt
复制
JTable table = new JTable(model);
table.getColumnModel().getColumn(yourCheckBoxColumnIndex).setCellRenderer(new CheckBoxRenderer());
// 如果需要允许编辑CheckBox,取消下面注释
// table.getColumnModel().getColumn(yourCheckBoxColumnIndex).setCellEditor(new CheckBoxEditor());

以上步骤可以实现在JTable中显示CheckBox而不是true/false值。根据你的实际情况,将yourCheckBoxColumnIndex替换为需要显示CheckBox的列的索引。

关于腾讯云相关产品的介绍和推荐链接,可以参考腾讯云官方文档进行了解和选择,具体地址如下:

  • 腾讯云官方文档:https://cloud.tencent.com/document/product
  • 腾讯云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 腾讯云数据库(TencentDB):https://cloud.tencent.com/product/tencentdb
  • 腾讯云云原生应用引擎(Tencent Cloud Native Application Engine):https://cloud.tencent.com/product/tcnae
  • 腾讯云存储(COS):https://cloud.tencent.com/product/cos
  • 腾讯云区块链(BCN):https://cloud.tencent.com/product/bcn
  • 腾讯云人工智能(AI):https://cloud.tencent.com/product/ai
  • 腾讯云物联网(IoT):https://cloud.tencent.com/product/iot
  • 腾讯云移动开发(Mobile):https://cloud.tencent.com/product/mobile
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

jTable插件辅助资料

==============================================jTable插件================================================ 【】引入jtable <link rel="stylesheet" type="text/css" href="../jtable/themes/lightcolor/blue/jtable.min.css" /> <script type="text/javascript" src="../jtable/jquery.jtable.min.js"></script> <script type="text/javascript" src="../jtable/localization/jquery.jtable.zh-CN.js"></script> 注:jTable插件需要jquery UI插件。之前要引入jQuery和jQueryUI 【】Servlet生成JSON结果 collegeList=collegeBusiness.getListByAll(); //定义数据返回JSON map Map<String, Object> jsonMap = new HashMap<String, Object>(); jsonMap.put("Result", "OK"); jsonMap.put("Records", collegeList); JSONObject result=JSONObject.fromObject(jsonMap); HttpServletResponse response=ServletActionContext.getResponse(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); PrintWriter out=response.getWriter(); out.println(result.toString()); out.flush(); out.close(); 【】jtable要求的返回格式 {  "Result":"OK",  "Records":[   {"PersonId":1,"Name":"Benjamin Button","Age":17,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":2,"Name":"Douglas Adams","Age":42,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":3,"Name":"Isaac Asimov","Age":26,"RecordDate":"\/Date(1320259705710)\/"},   {"PersonId":4,"Name":"Thomas More","Age":65,"RecordDate":"\/Date(1320259705710)\/"}  ] } 【】当出现异常后的jTable要求的结果 {    "Result":"ERROR",    "Message":"异常信息字符串" } 【】jTable的语法  $('#MyTableContainer').jtable({             //General options comes here             actions: {                 //Action definitions comes here             },             fields: {                 //Field definitions comes here             }             //Event handlers... });      【】jtable初始化 1.定义jTable显示的区域div

2.在JS中初始化jTable //定义部门表格 $('div#departmentmaincontent').jtable({            title: '部门列表',            selecting: true, //Enable selecting            multiselect: false, //not Allow mu

04

图书管理系统 出现的问题

JButton button_ok = new JButton("确定",new ImageIcon("ok.png")); southPanel.add(button_ok); button_ok.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { File f1 =SearchFrame.this.getClassName(); File[] f = f1.listFiles(); try { FileInputStream fr = new FileInputStream(f[0]); ObjectInputStream obo = new ObjectInputStream(fr); boolean exist = false;//用来判断有没有查到 do{ book_search =(Book)obo.readObject(); System.out.println(book_search); if(book_search.toString().contains(textField.getText())) { exist =true; Object[][] book=new Object[1][]; book[0][0]=book_search.getNumber(); book[0][1]=book_search.getName(); book[0][2]=book_search.getAuthor(); book[0][3]=book_search.getPress(); book[0][4]=book_search.getCount(); String [] book_info = {"编号","书名 ","作者","出版社","数量"}; table_search = new JTable(book,book_info); new SearchResult(); } }while(book_search==null); //当没有检索到书的时候显示结果 if(!exist){ JLabel label_result = new JLabel("没有检索到该书!!"); JOptionPane.showConfirmDialog(SearchFrame.this, label_result,"图书管理系统检索结果", JOptionPane.PLAIN_MESSAGE,JOptionPane.OK_OPTION , new ImageIcon("result.png")); } obo.close(); }catch(InvalidClassException e3) { e3.printStackTrace(); } catch (ClassNotFoundException e1) { e1.printStackTrace(); }catch(StreamCorruptedException e4){ e4.printStackTrace(); }catch(OptionalDataException e5) { e5.printStackTrace(); }catch(FileNotFoundException e6) { } catch (IOException e2) { e2.printStackTrace(); } } });

04
领券