奇技淫巧 JTable放自定义组件
来源:互联网 发布:linux 反汇编工具 编辑:程序博客网 时间:2024/06/01 11:07
话不多说,放代码
主界面
import java.awt.BorderLayout;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.DefaultCellEditor;import javax.swing.JCheckBox;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.TableColumnModel;public class MainWindow extends JFrame{ public MainWindow() { super(); setBounds(100,100,300,300); setTitle("JTable Example"); String[] column = {"JCheckBox"}; Object[][] row = new Object[5][1]; JTable t = new JTable(row,column); t.setRowHeight(70); TableColumnModel tcm = t.getColumnModel(); tcm.getColumn(0).setCellEditor(new DefaultCellEditor(new JCheckBox())); tcm.getColumn(0).setCellRenderer(new MyCellRenderer()); for (int i = 0; i < t.getRowCount(); ++i) t.setValueAt(false,i,0); t.setValueAt(true, 0, 0); JScrollPane scroll = new JScrollPane(t); t.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 1) { int columnIntex = t.columnAtPoint(e.getPoint()); int rowIntex = t.rowAtPoint(e.getPoint()); if (columnIntex == 0) { for (int i = 0; i < t.getRowCount(); ++i) t.setValueAt(false, i, 0); t.setValueAt(true, rowIntex, columnIntex); } } } }); this.getContentPane().add(scroll,BorderLayout.CENTER); }}
表格渲染器
import java.awt.Component;import java.awt.FlowLayout;import javax.swing.JCheckBox;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTable;import javax.swing.table.TableCellRenderer;public class MyCellRenderer extends JCheckBox implements TableCellRenderer{ private static JLabel text = new JLabel();// set the text you want private static JPanel p = new JPanel(); //set the layout of table cell /*设为static是为了应付JInternalFrame类子窗口,系列要释放资源是为不打开多窗口时重复,可去掉亲身体验*/ @Override public Component getTableCellRendererComponent(JTable arg0, Object arg1, boolean arg2, boolean arg3, int arg4, int arg5) { // TODO Auto-generated method stub p = null; text = null; p = new JPanel(); text = new JLabel(); boolean set = (Boolean)arg1; this.setSelected(set); if (this.isSelected()) text.setText("已选中"); else text.setText("未选中"); p.setLayout(new FlowLayout(FlowLayout.CENTER)); p.add(this); p.add(text); return p; }}
Main
public class Main { public static void main(String[] args) { MainWindow w = new MainWindow(); w.setVisible(true); }}
效果:
阅读全文
0 0
- 奇技淫巧 JTable放自定义组件
- 自定义表组件,继承于JTable
- JTable组件
- JTable组件
- 使用JTable组件
- 使用JTable组件
- 使用JTable组件
- Swing 组件 JTable 详解
- 奇技淫巧
- swing jTable 自定义单元格
- 自定义JTable单元格
- Java 自定义的JTable
- JTable表格组件使用例子
- 如何使用 Swing 组件 JTable
- (demo) : jtable的自定义cell
- java swing Jtable 自定义 表格
- 在JTable中添加可视化组件
- Jtable添加组件——转载
- Spring中bean的配置与使用
- 解决Unknown CMake command "QT5_WRAP_UI"类似错误
- 问题 F: C实验题——求绝对值最大值(JSU-ZJJ)
- 设计模式讲解与代码实践(二十二)——策略
- 是是是
- 奇技淫巧 JTable放自定义组件
- zookeeper部署及集群测试
- 迁移学习简介(tranfer learning)
- 啊啊啊啊啊
- python3.5使用flask-moment无法显示时间戳的问题
- Dubbo源代码分析九:优雅停机
- 问题 G: C语言实验题——某年某月的天数(JSU-ZJJ)
- 网站设计| 网站设计模板素材
- 记录以下Java的基本知识