操作JTable行与列的一个例子

/**
JTable行列操作的例子
增加JTable表格中在增加行与列方面,删除行与列,选中行与列...
*/
package test;
import java.util.ArrayList;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.EventQueue;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableColumn;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JMenuItem;
public class TableSelectionTest{
 public static void main(String[] args){
  EventQueue.invokeLater(new Runnable(){
   public void run(){
    JFrame frame = new TableSelectionFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
   }
  });
 }
}
class TableSelectionFrame extends JFrame{
 public TableSelectionFrame(){
  setTitle("TableSelectionTest");
  setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
  
  //set up multiplication table
  model = new DefaultTableModel(10,10);
  for(int i=0;i<model.getRowCount();i++){
   for(int j=0;j<model.getColumnCount();j++){
    model.setValueAt((i+1)*(j+1),i,j);
   }
  }
  table = new JTable(model);
  add(new JScrollPane(table),"Center");
  removedColumns = new ArrayList<TableColumn>();

  JMenuBar menuBar = new JMenuBar();
  setJMenuBar(menuBar);

  JMenu selectionMenu = new JMenu("Selection");
  menuBar.add(selectionMenu);

  final JCheckBoxMenuItem rowsItem = new JCheckBoxMenuItem("Rows");
  final JCheckBoxMenuItem columnsItem = new JCheckBoxMenuItem("Columns");
  final JCheckBoxMenuItem cellsItem = new JCheckBoxMenuItem("Cells");

  rowsItem.setSelected(table.getRowSelectionAllowed());
  columnsItem.setSelected(table.getColumnSelectionAllowed());
  cellsItem.setSelected(table.getCellSelectionEnabled());

  rowsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    table.clearSelection();
    table.setRowSelectionAllowed(rowsItem.isSelected());
    cellsItem.setSelected(table.getCellSelectionEnabled());
   }
  });
  selectionMenu.add(rowsItem);

  columnsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    table.clearSelection();
    table.setColumnSelectionAllowed(columnsItem.isSelected());
    cellsItem.setSelected(table.getCellSelectionEnabled());
   }
  });
  selectionMenu.add(columnsItem);

  cellsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    table.clearSelection();
    table.setCellSelectionEnabled(cellsItem.isSelected());
    rowsItem.setSelected(table.getRowSelectionAllowed());
    columnsItem.setSelected(table.getColumnSelectionAllowed());
   }
  });
  selectionMenu.add(cellsItem);
  
  JMenu tableMenu = new JMenu("Edit");
  menuBar.add(tableMenu);

  JMenuItem hideColumnsItem = new JMenuItem("Hide Columns");
  hideColumnsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    int[] selected = table.getSelectedColumns();
    TableColumnModel columnModel = table.getColumnModel();
    for(int i=selected.length;i>=0;i--){
     TableColumn column = columnModel.getColumn(selected[i]);
     table.removeColumn(column);
     removedColumns.add(column);
    }
   }
  });
  tableMenu.add(hideColumnsItem);

  JMenuItem showColumnsItem = new JMenuItem("Show Columns");
  showColumnsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    for(TableColumn tc:removedColumns){
     table.addColumn(tc);
    }
    removedColumns.clear();
   }
  });
  tableMenu.add(showColumnsItem);

  JMenuItem addRowItem = new JMenuItem("Add Row");
  addRowItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent e){
    Integer[] newCells = new Integer[model.getColumnCount()];
    for(int i=0;i<newCells.length;i++){
     newCells[i] = (i+1)*(model.getRowCount()+1);
    }
    model.addRow(newCells);
   }
  });
  tableMenu.add(addRowItem);

  JMenuItem removeRowsItem = new JMenuItem("Remove Rows");
  removeRowsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    int[] selected = table.getSelectedRows();
    for(int i=selected.length-1;i>=0;i--){
     model.removeRow(selected[i]);
    }
   }
  });
  tableMenu.add(removeRowsItem);

  JMenuItem clearCellsItem = new JMenuItem("Clear Cells");
  clearCellsItem.addActionListener(new ActionListener(){
   public void actionPerformed(ActionEvent event){
    for(int i=0;i<table.getRowCount();i++){
     for(int j=0;j<table.getColumnCount();j++){
      if(table.isCellSelected(i,j)){
       table.setValueAt(0,i,j);
      }
     }
    }
   }
  });
  tableMenu.add(clearCellsItem);

 }

 private DefaultTableModel model;
 private JTable table;
 private ArrayList<TableColumn> removedColumns;

 private static final int DEFAULT_WIDTH = 400;
 private static final int DEFAULT_HEIGHT = 300;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值