• JTable常见用法细则


    JTable是Swing编程中很常用的控件,这里总结了一些常用方法以备查阅.欢迎补充,转载请注明作者与出处.

    一.创建表格控件的各种方式:
    1)  调用无参构造函数.

    JTable table = new JTable();


    2)  以表头和表数据创建表格.

    Object[][] cellData = {{"row1-col1", "row1-col2"},{"row2-col1", "row2-col2"}};
    String[] columnNames = {"col1", "col2"};
        
    JTable table = new JTable(cellData, columnNames);


    3)  以表头和表数据创建表格,并且让表单元格不可改.

    String[] headers = { "表头一", "表头二", "表头三" };
    Object[][] cellData = null;

    DefaultTableModel model = new DefaultTableModel(cellData, headers) {

      public boolean isCellEditable(int row, int column) {
        return false;
      }
    };

    table = new JTable(model);


    二.对表格列的控制
    1) 设置列不可随容器组件大小变化自动调整宽度.

    table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);


    2) 限制某列的宽度.

    TableColumn firsetColumn = table.getColumnModel().getColumn(0);
    firsetColumn.setPreferredWidth(30);
    firsetColumn.setMaxWidth(30);
    firsetColumn.setMinWidth(30);


    3) 设置当前列数.

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    int count=5;
    tableModel.setColumnCount(count);


    4) 取得表格列数

    int cols = table.getColumnCount();


    5) 添加列

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    tableModel.addColumn("新列名");


    6) 删除列

    table.removeColumn(table.getColumnModel().getColumn(columnIndex));// columnIndex是要删除的列序号


    三.对表格行的控制
    1) 设置行高

    table.setRowHeight(20);


    2) 设置当前航数

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    int n=5;
    tableModel.setRowCount(n);


    3) 取得表格行数

    int rows = table.getRowCount();


    4) 添加表格行

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    tableModel.addRow(new Object[]{"sitinspring", "35", "Boss"});


    5) 删除表格行

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    model.removeRow(rowIndex);// rowIndex是要删除的行序号


    四.存取表格单元格的数据
    1) 取单元格数据

    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
    String cellValue=(String) tableModel.getValueAt(row, column);// 取单元格数据,row是行号,column是列号


    2) 填充数据到表格.
    注:数据是Member类型的链表,Member类如下:

    public class Member{
        // 名称
        private String name;
        
        // 年龄
        private String age;
        
        // 职务
        private String title;
    }


    填充数据的代码:

    public void fillTable(List<Member> members){
      DefaultTableModel tableModel = (DefaultTableModel) table
      .getModel();
      tableModel.setRowCount(0);// 清除原有行
      
      // 填充数据
      for(Member member:members){
        String[] arr=new String[3];
        arr[0]=member.getName();
        arr[1]=member.getAge();
        arr[2]=member.getTitle();
        
        // 添加数据到表格
        tableModel.addRow(arr);
      }
      
      // 更新表格
      table.invalidate();
    }


    2) 取得表格中的数据

    public List<Member> getShowMembers(){
      List<Member> members=new ArrayList<Member>();
      
      DefaultTableModel tableModel = (DefaultTableModel) table
      .getModel();
      
      int rowCount=tableModel.getRowCount();
      
      for(int i=0;i<rowCount;i++){
        Member member=new Member();
        
        member.setName((String)tableModel.getValueAt(i, 0));// 取得第i行第一列的数据
        member.setAge((String)tableModel.getValueAt(i, 1));// 取得第i行第二列的数据
        member.setTitle((String)tableModel.getValueAt(i, 2));// 取得第i行第三列的数据
        
        members.add(member);
      }
      
      return members;
    }


    五.取得用户所选的行
    1) 取得用户所选的单行

    int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

    if(selectRows==1){
      int selectedRowIndex = table.getSelectedRow(); // 取得用户所选单行  
      
      .// 进行相关处理
    }


    2) 取得用户所选的多行

    int selectRows=table.getSelectedRows().length;// 取得用户所选行的行数
    DefaultTableModel tableModel = (DefaultTableModel) table.getModel();

    if(selectRows>1)
      int[] selRowIndexs=table.getSelectedRows();// 用户所选行的序列
      
      for(int i=0;i<selRowIndexs.length;i++){
        // 用tableModel.getValueAt(row, column)取单元格数据
        String cellValue=(String) tableModel.getValueAt(i, 1);
      }
    }


    六.添加表格的事件处理

    view.getTable().addMouseListener(new MouseListener() {
      public void mousePressed(MouseEvent e) {
        // 鼠标按下时的处理
      }

      public void mouseReleased(MouseEvent e) {
        // 鼠标松开时的处理
      }

      public void mouseEntered(MouseEvent e) {
        // 鼠标进入表格时的处理
      }

      public void mouseExited(MouseEvent e) {
        // 鼠标退出表格时的处理
      }

      public void mouseClicked(MouseEvent e) {
        // 鼠标点击时的处理
      }
    });
    转自:http://www.blogjava.net/sitinspring/archive/2007/12/18/168425.html
  • 相关阅读:
    洛谷 P1194 飞扬的小鸟 题解
    洛谷 P1197 星球大战 题解
    洛谷 P1879 玉米田Corn Fields 题解
    洛谷 P2796 Facer的程序 题解
    洛谷 P2398 GCD SUM 题解
    洛谷 P2051 中国象棋 题解
    洛谷 P1472 奶牛家谱 Cow Pedigrees 题解
    洛谷 P1004 方格取数 题解
    洛谷 P2331 最大子矩阵 题解
    洛谷 P1073 最优贸易 题解
  • 原文地址:https://www.cnblogs.com/azhqiang/p/4038366.html
Copyright © 2020-2023  润新知