zoukankan      html  css  js  c++  java
  • JTable 的使用方法

    javax.swing.JTable类是java提供给用户创建表格的,使用它可以快捷的实现很多功能,比如直观的展现一个班所有的学生信息等。

    用法:

            在创建窗口的方法里直接创建JTable的对象JTable table = new JTable(model);

    model是一个类,这个类实现了TableModel接口,

    通过重写其中的方法可以设置表格的各种属性,所以在创建JTable之前还要加上 Model model=new Model();

    Model 类的内容会在下面给出。

    当然我在网上看到有很多没用TabelModel的代码,发现其代码不是那么直观,所以我更倾向于使用TableModel,

    好处就是操作起来方便,代码更清晰。

    至于TabelModel中的方法该怎么重写我会在代码注释中会给出,就不赘述了。

    源代码:

    import javax.swing.event.TableModelListener;
    import javax.swing.table.TableModel;
    
    public class Model implements TableModel {
        // 创建数组用于单元格中显示的内容
        String[][] values = new String[3][20];
    
        /**
         * 初始化数组内容
         */
        public void setValues() {
            values[0][0] = "小明";
            values[1][0] = "20150809";
            values[2][0] = "男";
            for (int i = 1; i < 20; i++) {
                values[0][i] = "没有数据";
            }
        }
    
        @Override
        public int getRowCount() {
            // 设置总行数
            return 20;
        }
    
        @Override
        public int getColumnCount() {
            // 设置总列数
            return 3;
        }
    
        @Override
        public String getColumnName(int columnIndex) {
            // 设置单元格列属性(表头名)
            if (columnIndex == 0) {
                return "姓名";
            } else if (columnIndex == 1) {
                return "学号";
            } else if (columnIndex == 2) {
                return "性别";
            } 
                return null;
        }
    
        /**
         * 设置每列数据类型
         */
        @Override
        public Class<?> getColumnClass(int columnIndex) {
            if(columnIndex==0){
                return String.class;
            }else if(columnIndex == 1){
                return String.class;
            }else if(columnIndex==2){
                return String.class;
            }        return null;
        }
    
        /**
         * 设置单元格是否允许编辑
         */
        @Override
        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return false;
        }
    
        /**
         * 设置单元格数据内容
         */
        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            setValues();
            return values[columnIndex][rowIndex];
        }
    
        /**
         * 设置单元格的值
         */
        @Override
        public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
    
        }
    
        @Override
        public void addTableModelListener(TableModelListener l) {
            // 此方法可给表格添加监听
        }
    
        @Override
        public void removeTableModelListener(TableModelListener l) {
            // 此方法可给表格移除监听
        }
    
    }

    主类:

    import java.awt.BorderLayout;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.RowSorter;
    import javax.swing.table.TableModel;
    import javax.swing.table.TableRowSorter;
    
    public class Manager {
    
        /**
         * @param JTable使用示例
         */
        public static void main(String[] args) {
            new Manager().showFrame();
        }
    
        public void showFrame() {
            // 设置窗体属性
            JFrame frame = new JFrame("JTable");
            frame.setLayout(new BorderLayout());
            frame.setSize(300,400);
            frame.setDefaultCloseOperation(3);
            frame.setLocationRelativeTo(null);
    
            // 创建表格和设置表格格式的类
            Model model = new Model();
            JTable table = new JTable(model);
    //将表格加入滚动面板便于显示
    JScrollPane jscroll = new JScrollPane(table); // 创建自动排序的对象,点击表头可自动对表格进行排序 RowSorter<TableModel> rs = new TableRowSorter<TableModel>(model); table.setRowSorter(rs); frame.add(jscroll, BorderLayout.CENTER); frame.setVisible(true); } }
  • 相关阅读:
    编译器优化 → C关键字volatile → memory破坏描述符zz
    Mybatis 控制台打出SqlLog的设置
    J2EE ssm框架服务启动项内存加载数据及读取。
    Oracle 同步表权限分配(同义词)
    iOS开发雕虫小技之傻瓜式定位神器超简单方式解决iOS后台定时定位
    Oracle分页查询SQL实现
    iOS新建项目基本配置
    DP之子序列问题
    图论之最小生成树
    基础数论算法
  • 原文地址:https://www.cnblogs.com/xiao-v/p/4716119.html
Copyright © 2011-2022 走看看