TableCellRenderer和TableCellEditor(一)
简单来说:
import java.awt.*;
import java.awt.event.*;
import javax.swing.table.*;
String[] states = new String[]{"stop", "stop", "stop"};
// model
class TableModel extends AbstractTableModel{
public int getColumnCount() {
return 2;
}
public int getRowCount() {
return states.length;
}
public Object getValueAt(int rowIndex, int columnIndex) {
if(columnIndex == 0){
return states[rowIndex];
}
return null;
}
public String getColumnName(int columnIndex) {
if(columnIndex == 0){
return "state";
}else{
return "operate";
}
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
if(columnIndex == 0){
return false;
}else{
return true;
}
}
}
// cell editor
class Editor extends AbstractCellEditor implements TableCellEditor, ActionListener {
int row;
JTable table;
JPanel panel;
JButton start;
JButton stop;
Editor(){
panel = new JPanel();
panel.setLayout(new GridLayout(1, 2));
start = new JButton("start");
stop = new JButton("stop");
start.addActionListener(this);
stop.addActionListener(this);
panel.add(start);
panel.add(stop);
}
public Object getCellEditorValue() {
return null;
}
public Component getTableCellEditorComponent(JTable table,
Object value,
boolean isSelected,
int row,
int column) {
this.table = table;
this.row = row;
return panel;
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == start){
states[row] = "start";
}else{
states[row] = "stop";
}
((AbstractTableModel)table.getModel()).fireTableCellUpdated(row, 0);
}
}
// cell render
class Renderer extends JComponent implements TableCellRenderer{
JPanel panel;
JButton start;
JButton stop;
Renderer(){
panel = new JPanel();
panel.setLayout(new GridLayout(1, 2));
start = new JButton("start");
stop = new JButton("stop");
panel.add(start);
panel.add(stop);
}
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
return panel;
}
}
public TableTest1(){
super("renderer and editor self-existent");
table = new JTable(new TableModel());
TableColumn tableColumn = table.getColumnModel().getColumn(1);
tableColumn.setCellRenderer(new Renderer());
tableColumn.setCellEditor(new Editor());
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
this.setSize(500, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
new TableTest1().show();
转载于:https://www.cnblogs.com/gwq369/p/5363193.html
TableCellRenderer和TableCellEditor(一)相关推荐
- Eclipse里如何指定目标JRE版本
当eclipse指定的JRE版本较老时,编译程序会报java.lang.UnsupportedClassVersionError.那么我们就 需要修改指定较新的JRE版本了 可能你也感兴趣的文章: 浅 ...
- JTable单元格放自定义控件(一)-如何在JTable的单元格放JPanel
原文链接:http://blog.sina.com.cn/s/blog_7f1c8c710101hdpf.html 最近自己尝试着模仿着实现一款非常有名的进销库存管理系统(智慧记)里面的一个功能.功能 ...
- TableCellRenderer TableCellEditor(三)
上文实现了renderer复用editor的功能,那么反过来editor是否也可以复用renderer的功能呢?而且第一篇提到"通过Java2D来绘制各种天花乱坠的效果"如何实现 ...
- java显示链表在jtable上输出_jtable的使用精华
jtable的使用精华 众所皆知,java中没有像c#中的DATAGRID似的数据显示控件,所以不能直接显示数据,只有通过自己定制表格才能显示数据,请个位来讨论一下java中用来显示数据jtable的 ...
- DefaultTableCellRenderer
首页 小组 读书 电影 音乐 同城 九点 书籍 电影 音乐 小组 成员 活动 搜索 <script type="text/javascript"> Douban.pre ...
- void addColumn(TableColumn aColumn)
void addColumn(TableColumn aColumn) 将 aColumn 追加到此 JTable 的列模型所保持的列数组的结尾. void addColumnSelectionInt ...
- Java Swing 开发之JTable中在添加组件(JCheckBox)
2019独角兽企业重金招聘Python工程师标准>>> 首先是创建表格 JTable demoTable= new JTable(); DefaultTableModel dtmDe ...
- JavaSwing编程总结
都2021年了,还有人用JavaSwing?这只是我的一个爱好,我喜欢做界面开发,但是又只有Java还学的不错,大部分Java书籍中对JavaSwing介绍的都比较一般,我便找了<Java2图形 ...
- 用Java写一个PC端的WIFI-ADB管理软件
废话 一直在用android studio做android开发,偶然一次机会接触到了wifi adb,试了好几个支持android studio的插件,各有优缺点,有一个本来用着好好的,突然就用不了, ...
最新文章
- js 自定义可编辑table并获取输入值
- 类似 Google Tips 页面的卡片式提示和翻转特效
- php接收dup,TCP与DUP简单对比
- 延长笔记本电脑寿命的四个简单方法
- Linux 下的文件管理管理系统中的输出输入
- PAT_B_1090_C++(25分)
- oracle一个表拆成多个表,oracle – 在oracle表中将多个以逗号分隔的值拆分为多行...
- 【剑指offer】_11整数中1出现的次数
- 面向过程和面向对象的联系和区别
- 向量加减法首尾规律_向量加减口诀首尾相接
- 【ThinkPHP5.0RC2吃螃蟹之】关于ThinkPHP5.0的渲染模板输出
- Ubuntu Server Download
- 线上问题处理1---CPU飙高问题定位
- 世界五大黑客:代码创造他们,他们改变世界!...
- 【力扣-动态规划入门】【第 4 天】45. 跳跃游戏 II
- MySQL 基础学习笔记
- 计算机第一启动设置u盘启动,如何进入bios,设置优盘为电脑第一启动顺序
- javascript数组(array)的常用方法(shift/unshift/pop/push/concat/splice/reverse/sort/slice/join)
- 【GPU精粹与Shader编程】(四) 《GPU Gems 2》全书核心内容提炼总结 · 上篇
- 将svg图标转换成iconfont图标