`
谷熙亚
  • 浏览: 52719 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jtable加入复选框

阅读更多

 

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Vector;

 

import javax.swing.DefaultCellEditor;

import javax.swing.JButton;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.AbstractTableModel;

import javax.swing.table.TableColumnModel;

 

/**

 * 

 * ----------------------------------------Table Demo4 --------------------------------

 * =====================================================快乐小神仙

 * 

 * 

 * 

 * 一、VectorArrayList讲解

 * 用到了向量Vector 可以参照ArrayList的用法 ,他们用法基本一样。

 * 区别: Vector是线性安全的,还有连个空间的增长长度方式不一样。

 * Vecrot是每次增加原来的一倍,ArrayList是每次增加原来的一半。

 * 

 * 

 *二、本例: Table demo的例子:-------在表格中添加 单选按钮,和复选框

 *  

 *   讲解:

 *   

 *   1、用JFrame,JPanel,JButton 写一个简单的界面

 *   

 *   2、 写一个内部类,让此类继承AbstractTableModel

 *   

 *   3、定义一个内部类的全局变量Vector vector;

 *   

 *   4、写一个构造方法 :初始化Vector

 *   

 *   5、定义一个内部类的全局变量,String[] columnNames = {}; 这是表格的列名

 *   

 *   6、实现方法getColumnCount():  columnNames.length;

 *   

 *   7、实现方法getRowCount(): vector.size;

 *   

 *   8、实现getValueAt(): vector.get(row).get(col);

 *   

 *  9、写一个往Vector中添加数据的方法 addRow(),这个方法是子类所特有的,其中方法名可以任意

 * 

 *   10、在外部类定义全局变量 private TableModel model和表格 private JTable table;

 *   

 *   11、在外部类中的构造方法初始化model table ,其中 初始化table是这样初始化的:table = new JTable(model);

 *   

 *   12、在构造方法定义一个滚动面板,将表格添加到面板中,要不然表格的表头是不会显示的:

 *   JScrollPane pane =new JScrollPane(table);

 *    

 *   13、然后将pane添加到JPanel中。

 *   

 *   14、运行程序...

 *   

 *   15、你会看见表头并不是你所想看到的样子,这是由于model是调用了父类AbstractTableModel中的方法getColumnName(),

 *   所以要修改表头的话,只能重写父类中的非抽象方法getColumnName(),覆盖父类中的方法

 *   

 *   16、 实现添加按钮的方法,再次我直接用匿名类实现

 *   

 *   17、运行程序,你会发觉“是否可用”的显示方法并不是你所想要的。

 *   

 *   18、要实现“是否可用”用复选框的形式进行显示,那么就需要重写父类中的getClass()方法

 *   

 *   19、运行程序,你会发觉复选框修改不了,所以还需要修改两个方法

 *   

 *   20、重写父类的方法 isCellEditAble()------让某些值可以进行修改

 *     setValueAt()-------是修改后的值生效。

 * 

 * Table demo------------在表格中添加其他组件

 * @author Administrator

 *

 */

public class TableDemo4 {

private JFrame frame;

private JPanel panel;

private JButton addButton;

private JTable table;

private TableModel model;

 

 

public TableDemo4(){

frame = new JFrame("表格测试");

panel = new JPanel();

addButton = new JButton("添加");

 

/*

 * 给按钮添加监听器

 */

addButton.addActionListener(new ActionListener() {

 

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

Object[] data = {"张三","zhangsan",true};

model.addRow(data);

//强制刷新界面

table.updateUI();

}

});

 

 

model = new TableModel();

table = new JTable(model);

/*model = new TableModel();

table = new JTable(model);

String[]d = {"张三","李四","王五"};

JComboBox com = new JComboBox(d);

TableColumnModel tcm = table.getColumnModel();//得到TableModel()

tcm.getColumn(0).setCellEditor(new DefaultCellEditor(com));

tcm.getColumn(0).setPreferredWidth(50);

tcm.getColumn(1).setPreferredWidth(100);

tcm.getColumn(2).setPreferredWidth(50);*/

 

JScrollPane pane = new JScrollPane(table);

 

panel.add(addButton);

panel.add(pane);

frame.add(panel);

frame.setVisible(true);

frame.setBounds(400,200,500,500);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

//model.addRow("1","zhangsan", true, "19");

//table.updateUI();

}

 

/**

 * 

 * AbstractTableModel:中的抽象方法:

 * getColumnCount(),getRowCount(),getValueAt()

 * JTable调用方法updateUI()的时候,就会执行这些方法。

 * 

 * 

 * updateUI()会把父类中的方法全部执行一遍 

 * @author Administrator

 *

 */

public class TableModel extends AbstractTableModel{

private Vector vector = new Vector();

private String[] columnNames = {"用户名","密码","是否可用"};

/**

 * ------------------------------------------------------

 * 重写父类中的抽象方法

 * 

 * 获得表格中的列数

 */

@Override

public int getColumnCount() {

// TODO Auto-generated method stub

System.out.println("getColumnCount()");

return columnNames.length;

}

 

@Override

public int getRowCount() {

// TODO Auto-generated method stub

System.out.println("getRowCount()");

return vector.size();

}

@Override

public Object getValueAt(int rowIndex, int columnIndex) {

// TODO Auto-generated method stub

//vector.get(rowIndex);得到的是Object的对象

System.out.println("getValueAt()");

return ((Vector)vector.get(rowIndex)).get(columnIndex);

}

/**

 * 抽象方法

 * -----------------------------------------------------------

 */

 

 

 

/**

 * 重写父类中非抽象的方法------覆盖父类中的方法

 */

 public String getColumnName(int columnIndex) {

 System.out.println("getColumnName");

 return columnNames[columnIndex];

}

 

 /**

  * 重写父类中的方法=======获得输入数据的类型,实现复选框的显示

  */

 public Class getColumnClass(int columnIndex){

 return getValueAt(0,columnIndex).getClass();

 }

 

 /**

  * 让表格中某些值可以进行修改

  * return false,说明不能进行修改

  */

 public boolean isCellEditable(int rowIndex, int columnIndex) {

return true;

}

 

 /**

  * 重写父类中的方法=====实现表格的数据可操作

  */

 public void setValueAt(Object value, int rowIndex, int columnIndex) {

 //先删除,在添加

 System.out.println("setValueAt()");

 ((Vector) vector.get(rowIndex)).remove(columnIndex);

 ((Vector) vector.get(rowIndex)).add(columnIndex,value);

 this.fireTableCellUpdated(rowIndex, columnIndex);

 }

 

 

 

/**

 * 无参构造方法------初始化数据

 */

public TableModel(){

 

}

 

/**

 * 往行中添加数据----这个方法名可以随意,由用户进行自行调用,

 * 否则table.updateUI()是不会自动调用的

 */

public void addRow(Object[] data){

int size = data.length;

Vector v = new Vector();

for(int i=0; i<size; i++){

v.add(data[i]);

}

vector.add(v);

}

 

}

/**

 * 程序的入口

 */

public static void main(String[] args){

new TableDemo4();

}

}

<!--EndFragment-->
分享到:
评论

相关推荐

    Jtable中加入复选框的两种方法

    JTable中加入复选框的两种方法 在Java中,JTable是一个常用的表格控件,用于显示和编辑表格数据。然而,在JTable中加入复选框是一个常见的需求,但是却不是那么容易实现。本文将介绍JTable中加入复选框的两种方法,...

    swing table加复选框

    在某些场景下,我们可能需要在`JTable`的每一行中添加复选框,以便用户可以选择或取消选择特定行。这通常用于实现多选功能,例如在数据操作、筛选或者设置偏好时。以下将详细介绍如何在`JTable`中添加复选框以及相关...

    JTable添加CheckBox

    通过上述代码,我们可以创建一个包含`CheckBox`的`JTable`,并且表头的`JCheckBox`可以实现全选/全不选的功能。这种功能在很多数据操作应用中都非常实用,例如在邮件客户端、任务管理器或者文件管理器中选择多项进行...

    带CheckBox的JTable源代码

    本示例中的“带CheckBox的JTable源代码”显然涉及如何在`JTable`的列中嵌入复选框,让用户能够通过勾选来选择或编辑数据。 首先,要创建带有复选框的`JTable`,你需要创建一个自定义的`TableCellRenderer`类。这个...

    JTable增加删除按钮实例

    JTable增加删除按钮实例,用于java开发

    共享一个Swing JTable组件的CheckBox管理类

    在实际应用中,我们有时需要在JTable的列中添加复选框(CheckBox)来实现多选功能。本篇将介绍一个Swing JTable组件的CheckBox管理类,名为`TableCheckboxManager`,它能够帮助开发者更方便地管理和操作这些复选框。...

    JTable使用 JTable使用

    JTable使用 JTable使用JTable使用JTable使用

    jTableCheckbox:表格行的jQuery插件充当复选框

    jTableCheckbox 用于表行的jQuery插件充当复选框。 它是什么? jTableCheckbox将每个表行变成一个大复选框。... jTableCheckbox使用复选框中的data-jtable属性进行表单提交。 &lt; table&gt; &lt; tbody&gt; &lt; td

    Jtable 中放入多个按钮

    在Java Swing库中,`JTable`是一个非常重要的组件,用于展示二维数据表格。当我们需要在`JTable`中实现更复杂的交互,比如在一个单元格内放置多个按钮时,这通常涉及到自定义`TableCellRenderer`和`TableCellEditor`...

    JTable

    JTable的显示效果

    Treeselectbox.rar

    例如,我们可以创建一个CustomTreeCellRenderer类,重写其getTreeCellRendererComponent方法,使得每个树节点都显示为一个带复选框的组件。同时,我们需要监听JTree的SelectionValueChanged事件,当用户更改选择时,...

    JTable动态刷新数据

    JTable 动态刷新数据 JTable 动态刷新数据是指在 Java Swing 应用程序中,使用 JTable 组件展示数据,并实时更新数据的过程。这种技术在很多实际应用场景中非常有用,如股票交易平台、实时监控系统、电子表格等。 ...

    java 中 Jtable的用法

    ### Java中的JTable用法详解 #### 一、概述 JTable是Swing框架中用于显示和编辑表格数据的关键组件之一。它不仅提供了强大的数据管理功能,还支持丰富的定制选项,使得开发者能够根据具体需求创建出高度个性化的...

    JTable实例

    这个文件可能涉及到了`JTable`中的复选框列,即在表格的一列中展示`JRadioButton`。这通常是通过自定义`TableCellRenderer`和`TableCellEditor`来实现的。`TableCellRenderer`负责渲染单元格的外观,而`...

    JTable表格单元加按钮,并且响应点击事件Demo.rar

    用改写 DefaultCellEditor 和 TableCellRenderer的方法实现,主要代码: table.getColumnModel().getColumn(2).setCellEditor(new MyButtonEditor()); table.getColumnModel().getColumn(2).setCellRenderer...

    jTree和jTable 双向联动

    实现jTable和jTree的双向联动,点击jTree会选中jTable单元格,点击jTable会选中jTree节点。

    JTable 练习例子exa

    在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示表格数据。它是`javax.swing.JTable`类的实例,提供了一个可交互的二维数据视图,允许用户浏览、编辑和操作表格中的数据。这个"JTable ...

    实现了超链接功能的JTable

    实现了超链接功能的JTable,双击后ie打开超链接,超链接文字为蓝色,同时屏蔽了单元格的双击编辑功能,很实用.

    JTable的使用收藏

    JTable的使用收藏 1.JTable与TableModel 1.TableModel与JTable的关系 2.TableModel实践 3.使用JTable+TableModel展示java中的数据对象 2.JTable展示方式的美化 1.设置表格的宽度和高度 2.要显示表头 3.新加列,将...

    JTable实例大全

    `JTable`默认提供了一些基本的单元格编辑器和渲染器,如文本、复选框等。但为了实现更复杂的需求,如日期选择、颜色选择等,你需要自定义`TableCellEditor`和`TableCellRenderer`。 6. **排序和过滤**: `JTable`...

Global site tag (gtag.js) - Google Analytics