
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.Dimensionimport 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) 第一个值为行,第二个值为列。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)