如何在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

}

}

}

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

import java.awt.Dimension

import javax.swing.JDialog

import javax.swing.JPanel

import javax.swing.JScrollPane

import javax.swing.JTable

import javax.swing.table.AbstractTableModel

public class MyDialog extends JDialog{

MyDialog(){

Object[][] rows = {{new Boolean(false),"22"},{new Boolean(false),"22"}}

String[] columnName = {"CheckBox","22"}

JPanel contentPane = new JPanel()

MyTable myTable = new MyTable()

myTable.setColumnName(columnName)

myTable.setRows(rows)

JTable jtable = new JTable(myTable)

JScrollPane scrollPane=new JScrollPane(jtable)

scrollPane.setPreferredSize(new Dimension(490, 310))

contentPane.add(scrollPane)

this.add(contentPane)

this.setBounds(300, 400, 500, 400)

this.setVisible(true)

}

public class MyTable extends AbstractTableModel {

private String[] columnName

private Object[][] rows

public int getColumnCount() {

return columnName.length

}

public int getRowCount() {

return rows.length

}

public Object getValueAt(int rowIndex, int columnIndex) {

return rows[rowIndex][columnIndex]

}

/**

* 返回表格title

*/

public String getColumnName(int column) {

return columnName[column]

}

/**

* 返回不同类型的数据

*/

public Class getColumnClass(int columnIndex) {

return getValueAt(0, columnIndex).getClass()

}

/**

* 返回 true 单元格可编辑

*/

public boolean isCellEditable(int rowIndex, int columnIndex) {

if(columnIndex>1){

return false

}else{

return true

}

}

/**

* 得到编辑后的值

*/

public void setValueAt(Object value, int rowIndex, int columnIndex) {

rows[rowIndex][columnIndex] = value

}

public void setColumnName(String[] columnName) {

this.columnName = columnName

}

public void setRows(Object[][] rows) {

this.rows = rows

}

}

public static void main(String[] args){

MyDialog md =new MyDialog()

}

}

另获得CheckBox返回值语句为

myTable .getValueAt(0, 0) 第一个值为行,第二个值为列。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存