JTable

final Table table = new Table(parent, SWT.NONE | SWT.FULL_SELECTION);
  final GridData gd = new GridData(SWT.LEFT, SWT.TOP, false, true);
  gd.heightHint = 100;
  table.setLayoutData(gd);
  table.setHeaderVisible(true);
  table.setLinesVisible(true);
  final TableColumn tcCondition = new TableColumn(table, SWT.None);
  final TableColumn tcUserValue = new TableColumn(table, SWT.None);
  final TableColumn tcUserColor = new TableColumn(table, SWT.None);
  tcCondition.setText("条件");
  tcCondition.setWidth(80);
  tcUserValue.setText("枚举值");
  tcUserValue.setWidth(80);
  tcUserColor.setText("颜色");
  tcUserColor.setWidth(80);
  table.addListener(SWT.MouseDoubleClick, new Listener() {
   int editColumnIndex = -1;
   @Override
   public void handleEvent(final Event e) {
    final Point point = new Point(e.x, e.y);
    final TableItem tableItem = table.getItem(point);
    if (tableItem == null) {
     return;
    }
    for (int i = 0; i < 3; i++) {
     final Rectangle r = tableItem.getBounds(i);
     if (r.contains(point)) {
      editColumnIndex = i;
      final TableEditor editor = new TableEditor(table);
      final Control oldEditor = editor.getEditor();
      if (oldEditor != null) {
       oldEditor.dispose();
      }
      final Text text = new Text(table, SWT.NONE);
      text.computeSize(SWT.DEFAULT, table.getItemHeight());
      editor.grabHorizontal = true;
      editor.minimumHeight = text.getSize().y;
      editor.minimumWidth = text.getSize().x;
      editor.setEditor(text, tableItem, editColumnIndex);
      text.setText(tableItem.getText(editColumnIndex));
      text.forceFocus();
      text.addModifyListener(new ModifyListener() {
       @Override
       public void modifyText(final ModifyEvent e) {
        editor.getItem().setText(editColumnIndex, text.getText());
       }
      });
      text.addFocusListener(new FocusListener() {
       @Override
       public void focusGained(final FocusEvent e) {
        // TODO Auto-generated method stub
       }
       @Override
       public void focusLost(final FocusEvent e) {
        text.setForeground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
        text.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
       }
      });
     }
    }
   }
  });

  

时间: 2024-10-10 09:45:44

JTable的相关文章

Swing中使用JTable动态获取数据库中的数据并显示

笔者注:本文供新手学习使用,若有一定基础,可以直接看3! 1.创建数据库: /* Navicat MySQL Data Transfer Source Server : aa Source Server Version : 50519 Source Host : localhost:3306 Source Database : test Target Server Type : MYSQL Target Server Version : 50519 File Encoding : 65001 D

JTable只要一双击就进入编辑状态,禁止的方法实现

我用JTable做了一个表格,表格内容只供查看和选择,可每次只要一双击,就进入编辑状态,可是现在我不需要当双击的时候修改表格的内容.这时候需要重载isCellEditable方法. 下面是我的实现的代码: DefaultTableModel model = new DefaultTableModel(date, columnNames) { public boolean isCellEditable(int row, int column) { return false; } }; 这样设置的话

JTable用法-实例

前几篇文章介绍了JTable的基本用法,本文实现一个简单的JTable,算是前文的一个总结,并造福供拷贝党们. Swing-JTable用法-入门 Swing-JTable的渲染器与编辑器使用demo Swing-JTable检测单元格数据变更事件 一.主要功能 1.数据的增删改: 2.渲染器:“Vegetarian”列存放布尔值,以checkBox形式显示:“Sport”列存放字符串,以comboBox形式显示: 3.编辑器:“Name”的编辑器实现一个按钮,按下时弹出对话框: 4.ToolT

Java 根据comboBox选择结果显示JTable

处理这样的问题的主要思路是:     对于JTable,JTree等Swing控件,都有一个对应的Model用来存储数据,JTable对应的有一个DefaultTableModel.     DefaultTableModel model = new DefaultTableModel(datas,columnNames);     JTable jTable = new JTable(model);        DefaultTableModel这个类支持使用数组Object[][]或者是V

JTable 和 AbstractTableModel 几个关键点

1    重写的方法 @Override public int getColumnCount() { // TODO Auto-generated method stub return this.columnNames.size(); } @Override public String getColumnName(int column) { // TODO Auto-generated method stub return (String) this.columnNames.get(column

【代码笔记】Java连连看项目的实现(2)——JTable 、TableModel的使用

博客有时间就写写,所以一篇可能会拆成很多篇,写完后计划再合在一起. 首先肯定是要实现连连看的界面. 先准备连连看要的图片.. “LianLianKan”就是项目名称. 当然,如果小白看我的博客想学到什么,我会说还是放弃,因为文字描述会忽视很多细节,而细节决定bug…… 所以,包括以前的和以后的,博文都会是给自己看看或者内行触类旁通的,也就是——笔记. 我也是今天才明白博文的真正意义吧,所以以后的博文风格会大改……尽量会用自己语言风格来描述以便自己能看懂. 废话少说,现在的第2步: 创建数组,一个

JavaSE GUI显示列表 JTable的刷新 重新加载新的数据

JTable在显示所有数据之后,假如需要搜索某个名字,则会获取新的列表数据. 假设datas是JTable的数据,定义为: private Vector<Vector> datas = new Vector<Vector>(); 当你刷新数据的时候,应该这样: if (datas != null) { datas.clear(); Vector<Vector> vectors = getDatasFromList(studentList); datas.addAll(v

JTable 单元格合并 【转】

单元格合并 一.单元格合并.(1)我们可以使用Jtable的三个方法:getCellRect(),columnAtPoint(),and rowAtPoint().第一个方法返回一个单元格的边界(Rectangle类),第二.三个方法分别返回屏幕指定位置的列和行.为了实现单元格合并,我们需要重载(overwrite)这三个方法. (2)另外我们需要找出渲染Jtable的ComponentUI对象,并且修改它以达到我们的目的. (3)创建新的类记录单元格合并情况的数据模型,它要包涵一个方法来取得单

【代码笔记】Java连连看项目的实现(1)——JTable 、TableModel的使用

javax.swing.table.TableModel和javax.swing.JTable JTable .TableModel是Java里面画表格的包. TableModel:为Table提供显示数据.表格维数.表格中显示数据类  型.列标题等Table需要显示的一些属性 JTable:提供表格本身的属性和操作,比如表格的样式.行高.背景.行选中属性等 JTable相当于网页,模特:TableModel相当于服务器,衣服. JTable .TableModel 两者是相互依赖的关系(等于B

Swing Jtable 网格线设置

Swing jtable不绘制网格线或只绘制一条垂直或水平线问题总结 1 不绘制网格线…但占屏幕空间…网格是透明的…. myJTable1.setShowHorizontalLines(false); 水平线不显示 myJTable1.setShowVerticalLines(false); 垂直线不显示 2 不绘制网格线…并且不占屏幕空间…网格是没有的…. setIntercellSpacing():修改单元格间隔,因此也将影响网格线的粗细. setRowMargin (0);设置相邻两行单元