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); } }
  • 相关阅读:
    [SCOI2012]滑雪与时间胶囊
    [SCOI2012]喵星球上的点名
    SDOI2012 Round1 day2 拯救小云公主(dis)解题报告
    SDOI2012 Round1 day2 象棋(chess)解题报告
    SDOI2012 Round1 day2 集合(set)解题报告
    [Sdoi2014]数数[数位dp+AC自动机]
    [NOI2013]快餐店
    java 日期的格式化 输入/输出
    elastic search 查询语句
    elasticsearch数据迁移——elasticsearch-dump使用
  • 原文地址:https://www.cnblogs.com/xiao-v/p/4716119.html
Copyright © 2011-2022 走看看