Java Swing JTable 表格【16:复选框JCheckBox作为表格元素】
2016-01-14 22:07
573 查看
上一篇介绍了组合列表框作为表格元素的例子,这篇根据上篇的DefaultCellEditor的构造方法,再来练习一个复选框的例子
这个例子首先在创建数据时,复选框那一列的值默认值一个给得是false,一个给的是true,所以界面打开的时候会一个是选中,一个是没选中,如图:
代码如下:
package com.acconsys.swing.chapter14; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.DefaultCellEditor; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.AbstractTableModel; /** * 使用复选框作为编辑器来编辑表格中的单元格 * * @author burns * */ public class Test18 { public Test18() { JFrame f = new JFrame(); MyTable18 mt = new MyTable18(); /** * 由于MyTable类继承了AbstractTableModel,并且实现了getColmunCount()、getRowCount()、 * getValueAt()方法 由此可以通过通过MyTable18来产生TableModel的实体 */ JTable t = new JTable(mt); JCheckBox jc1 = new JCheckBox(); t.getColumnModel().getColumn(4) .setCellEditor(new DefaultCellEditor(jc1)); t.setPreferredScrollableViewportSize(new Dimension(550, 30)); JScrollPane s = new JScrollPane(t); f.getContentPane().add(s, BorderLayout.CENTER); f.setTitle("ColumnModelDd"); f.pack(); f.setVisible(true); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { new Test18(); } } class MyTable18 extends AbstractTableModel { Object[][] p = { { "王鹏", new Integer(66), new Integer(32), new Integer(98), false }, { "宋兵", new Integer(85), new Integer(69), new Integer(154), true }, }; String[] n = { "姓名", "语文", "数学", "总分", "及格与否" }; @Override public int getRowCount() { return p.length; } @Override public int getColumnCount() { return n.length; } @Override public Object getValueAt(int rowIndex, int columnIndex) { return p[rowIndex][columnIndex]; } @Override public String getColumnName(int column) { return n[column]; } @Override public Class<?> getColumnClass(int columnIndex) { return getValueAt(0, columnIndex).getClass(); } @Override public boolean isCellEditable(int rowIndex, int columnIndex) { return true; } @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { p[rowIndex][columnIndex] = aValue; fireTableCellUpdated(rowIndex, columnIndex); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树