如何在JTable中添加JCheckBox?

如何在JTable中添加JCheckBox?,第1张

package test

import java.awt.BorderLayout

import java.awt.Component

import javax.swing.DefaultCellEditor

import javax.swing.JCheckBox

import javax.swing.JFrame

import javax.swing.JPanel

import javax.swing.JScrollPane

import javax.swing.JTable

import javax.swing.table.DefaultTableModel

import javax.swing.table.TableCellRenderer

import javax.swing.table.TableColumnModel

@SuppressWarnings("serial")

public class TestJtable extends JPanel {

public TestJtable(){

init()

}

private void init() {

setLayout(new BorderLayout())

JScrollPane scrollPane = new JScrollPane(createTable())

add(scrollPane)

}

private JTable createTable() {

JTable table = new JTable()

String[] tableHeads = new String[]{"姓名","年龄","是否通过"}

DefaultTableModel dtm = (DefaultTableModel)table.getModel()

dtm.setColumnIdentifiers(tableHeads)

/*******添加的一些数据,也可以从数据库中提取数据*************/

dtm.addRow(new Object[]{"aa","12",new Boolean(true)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

dtm.addRow(new Object[]{"aa","12",new Boolean(false)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

dtm.addRow(new Object[]{"aa","12",new Boolean(false)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

dtm.addRow(new Object[]{"aa","12",new Boolean(false)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

dtm.addRow(new Object[]{"aa","12",new Boolean(false)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

dtm.addRow(new Object[]{"aa","12",new Boolean(false)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

dtm.addRow(new Object[]{"aa","12",new Boolean(false)})

dtm.addRow(new Object[]{"bb","34",new Boolean(false)})

/*****设置table的列模型****/

TableColumnModel tcm = table.getColumnModel()

tcm.getColumn(2).setCellEditor(new DefaultCellEditor(new JCheckBox()))

tcm.getColumn(2).setCellRenderer(new TestTableCellRenderer())

tcm.getColumn(2).setPreferredWidth(80)

tcm.getColumn(2).setWidth(80)

tcm.getColumn(2).setMaxWidth(80)

return table

}

public static void main(String[] args) {

JFrame jframe = new JFrame()

jframe.setBounds(300,100,300,200)

jframe.setTitle("测试")

jframe.add(new TestJtable())

jframe.setVisible(true)

}

class TestTableCellRenderer extends JCheckBox implements TableCellRenderer{

@Override

public Component getTableCellRendererComponent(JTable table,

Object value, boolean isSelected, boolean hasFocus, int row,

int column) {

Boolean b = (Boolean) value

this.setSelected(b.booleanValue())

return this

}

}

}

一直没有时间给你说,不好意思。今天下午有点空。有什么不明白的。可以问我。

// 给你个示例代码

int rows=myTable.getRowCount()

int ckxCol=0// 假设第一列是checkbox列 

for(int r=0r<rowsr++){// 循环所有行

     Object v=myTable.getValueAt(r,ckxCol)   

     if(v==null || ((Boolean)v).booleanValue()){

         System.out.println("["+r+"]=flase")

     }else{

         System.out.println("["+r+"]=true")

     }

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11543586.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存