`
hubin4
  • 浏览: 96696 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

jtable-弄了我一整天

阅读更多
==
-
--
---通用的表格设计,弄了我一整天,应该可以满足一般用途了.
1,自己定义表格模型,让boolean值变checkbox
2,有些信息隐藏起来,比如电话号码等,但是可以拿到用.
3,设置事件,这个做的不太好,只可以通过鼠标,
4,这里的一个TO我没有写,补一下
---------------
public class BeautyTo {
    private String name;
    private String age;
    private boolean Beauty;
    private String telNum;
GET SET 方法自己弄.JAVABEAN而已.
---------------
5.附件是几张练习体会的图片,可以看看

===

package downtimemodule;

import java.util.ArrayList;
import java.util.UUID;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

public class HbTT2 extends javax.swing.JFrame {

    /** Creates new form HbTT2 */
    public HbTT2() {
        initComponents();
        makeTable();
        this.setLocationRelativeTo(null);
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        jTable1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTable1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 546, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 526, Short.MAX_VALUE)
                    .addContainerGap()))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 140, Short.MAX_VALUE)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(35, Short.MAX_VALUE)))
        );

        pack();
    }// </editor-fold>

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        int i = jTable1.getSelectedRow();
        JOptionPane.showMessageDialog(null, "u select row's index is: [" + i + "]");
        Object o = jTable1.getValueAt(i, 2);
        JOptionPane.showMessageDialog(null, "the check box status is: [" + o + "]");
        Object o2 = jTable1.getValueAt(i, 3);
        JOptionPane.showMessageDialog(null, "the hidden serise no is: [" + o2 + "]");
    }                                    

    private void makeTable() {
        // initial some data
        ArrayList<BeautyTo> arrays = new ArrayList<BeautyTo>();
        BeautyTo beautyTo = null;
        for (int i = 0; i < 7; i++) {
            beautyTo = new BeautyTo();
            beautyTo.setAge(i * 5 + "");
            beautyTo.setName("avbb" + i);
            beautyTo.setBeauty(i % 2 == 0 ? true : false);
            beautyTo.setTelNum(UUID.randomUUID().toString());
            arrays.add(beautyTo);
        }
        // make table
        String[] columns = {"NAME", "AGE", "IS_BEAUTIFUL", "TEL"};
        Object[][] data = new Object[arrays.size()][columns.length];
        for (int j = 0; j < arrays.size(); j++) {
            data[j][0] = arrays.get(j).getName();
            data[j][1] = arrays.get(j).getAge();
            data[j][2] = arrays.get(j).isBeauty();
            data[j][3] = arrays.get(j).getTelNum();
        }
        //this is very important
        DefaultTableModel defaultTableModel = new MyDefaultTableModel(data, columns);
        jTable1.setModel(defaultTableModel);
        hideColumn(jTable1, 3);
        //jScrollPane1.setViewport(jTable1); already set in the gen code
    }

    private void hideColumn(JTable jtable, int columnIndex) {
        TableColumn tc = jtable.getColumnModel().getColumn(columnIndex);
        tc.setWidth(0);
        tc.setMinWidth(0);
        tc.setMaxWidth(0);
        tc.setPreferredWidth(0);
        jtable.getTableHeader().getColumnModel().getColumn(columnIndex).setMaxWidth(0);
        jtable.getTableHeader().getColumnModel().getColumn(columnIndex).setMinWidth(0);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new HbTT2().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    // End of variables declaration
}

class MyDefaultTableModel extends DefaultTableModel {

    public MyDefaultTableModel(Object[][] data, Object[] columnNames) {
        super(data, columnNames);
    }
    Class[] types = new Class[]{
        String.class, String.class, Boolean.class, String.class
    };

    @Override
    public Class getColumnClass(int columnIndex) {
        return types[columnIndex];
    }

    @Override
    public boolean isCellEditable(int row, int column) {
        if (column == 2) {
            return true;
        }
        return false;
    }
}

分享到:
评论

相关推荐

    复杂JTable-跨列表头

    "复杂JTable-跨列表头"是一个特殊实现,它扩展了JTable的功能,允许在表头中进行列的合并,这在显示层次结构或分组数据时特别有用。 跨列表头(或合并列头)的概念是将多个列的标题合并为一个大的表头单元格,通常...

    belajar-jtable-satu:学习将数据显示到 JTable

    `belajar-jtable-satu`项目显然旨在教授如何在Java应用中有效地使用JTable来显示数据。JTable不仅提供了数据的可视化,还支持用户交互,如排序、选择和编辑。以下是关于使用JTable的一些关键知识点: 1. **JTable的...

    Llenar-JTable-JAVA-JPA

    本项目"填充-JTable-JAVA-JPA"是一个实例,演示了如何利用JPA从MYSQL数据库中获取数据,并将其填充到JTable和JComboBox组件中。JTable是Swing中的一个组件,常用于展示表格数据,而JComboBox则是一种下拉选择框,...

    mvc+Jquery-jTable

    `jTable` 是一个基于jQuery的开源插件,用于在Web应用中创建数据表。它提供了诸如数据分页、排序、过滤和添加/编辑/删除记录等功能,且具有良好的用户体验和响应式设计。 **1. jTable 的基本使用** jTable通过JSON...

    --JTable的分页显示

    在Java Swing应用开发中,`JTable`是一个常用的组件,用于展示二维数据表格。当数据量较大时,一次性加载所有数据不仅效率低下,也可能导致界面响应缓慢。因此,实现`JTable`的分页显示是优化用户体验的重要手段。这...

    Java显示源码-How-To-Display-Image-From-JTable-Cell-To-JLabel-In-Java-Java-S

    Java显示原始码如何从JTable单元显示图像到Java Java Java标签中的源代码 如何在Java中显示从JTable单元到JLabel的图像(Java源代码)本指南显示如何在jlabel视频上显示选定的jtable行图像-

    java--JTable排序实例源码

    在Java编程语言中,`JTable`是Swing库中的一个关键组件,用于展示数据集在二维表格形式中。这个实例“java--JTable排序实例源码”提供了一个功能,允许用户通过点击表头对`JTable`中的数据进行排序。这种功能在处理...

    JTable使用 JTable使用

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

    JTable动态刷新数据

    JTable 是一个基于表格的数据展示组件,可以用来展示大量数据。它的数据模型是基于 TableModel 接口实现的,TableModel 负责存储和管理数据。 在动态刷新数据时,需要使用 DefaultTableModel,这是一个实现了 ...

    JTable

    JTable的显示效果

    Jtable 中放入多个按钮

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

    java 中 Jtable的用法

    为了创建一个JTable实例,我们需要准备两个主要的数据结构:一个是表示列名的`String`数组,另一个是存储数据的二维对象数组。 ##### 示例代码分析 ```java // 定义列名 String[] columnNames = {"Product", ...

    一个详细的JTable使用例子

    通过这个例子,我们可以学习到如何构建一个基于数据库的JTable应用,包括创建自定义的数据模型,实现数据的添加、删除和修改,以及与数据库的交互。这对于开发Java Swing界面的桌面应用来说是非常实用的技能。

    jTable一个JQuery插件创建基于AJAX的CRUD表

    在使用volosoft-jtable-347f97d这个压缩包时,开发者可以找到以下资源: 1. **源代码**:包含了jTable的JavaScript和CSS文件,用于在项目中引入和使用。 2. **文档**:详细的使用指南和API参考,帮助开发者快速理解...

    JTable 练习例子exa

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

    支持ResultSet的JTable

    在Java编程中,`JTable`是Swing库中的一个组件,用于在用户界面中展示二维表格数据。它常用于创建交互式的表格,允许用户查看和编辑数据。当我们从数据库查询数据并希望在用户界面上直观地显示这些数据时,`...

    JTable表头合并

    在Java Swing应用开发中,`JTable`是一个非常重要的组件,用于展示二维表格数据。它提供了丰富的功能,如数据编辑、排序、选择等。而"JTable表头合并"是Swing中的一个高级特性,允许开发者创建具有复杂结构的表头,...

    JTable颜色渲染代码

    根据给定文件的信息,本文将围绕“JTable颜色渲染代码”这一主题展开,重点解析JTable的基本操作、初始化方法及高级的颜色渲染功能。 ### JTable简介 JTable是Swing库中的一个组件,用于在Java应用程序中显示表格...

    不错的jquery插件jtable

    `jtable` 是一个强大的 jQuery 插件,它为 web 开发者提供了构建数据驱动的表格的简便方法。jtable 的设计目标是简化数据展示、编辑和管理的过程,使得在 ASP.NET MVC 框架下开发更加高效和直观。 ### 1. jtable ...

Global site tag (gtag.js) - Google Analytics