java 多表头表格的实现

发布网友

我来回答

3个回答

热心网友

按照你的要求编写的Java程序如下

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowSorter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableRowSorter;
public class E extends JFrame implements KeyListener{
 String[] columnTitle={"书名","图书作者","发行时间","价格"};
 Object[][]data={{new String(),new String(),new Date(),0.0}};
 DefaultTableModel model = new DefaultTableModel(data,columnTitle){
  public Class getColumnClass(int column) {  
   Class returnValue;  
   if (column == 2 || column==3){  
    returnValue = getValueAt(0, column).getClass();  
   } else {  
    returnValue = Object.class;  
   }  
   return returnValue;  
  }  
 };  
 JTable jt=new JTable(model);
 JScrollPane jsp=new JScrollPane(jt);
 E(){
  setTitle("表格测试");
  jt.addKeyListener(this);
  TableColumnModel tcm=jt.getColumnModel();
  TableColumn  tc=tcm.getColumn(0);
  tc.setPreferredWidth(250);
  TableColumn  tc1=tcm.getColumn(1);
  tc1.setPreferredWidth(75);
  TableColumn  tc2=tcm.getColumn(2);
  tc2.setPreferredWidth(75);
  TableColumn  tc3=tcm.getColumn(3);
  tc3.setPreferredWidth(200);
  RowSorter sorter = new TableRowSorter(model);  
  jt.setRowSorter(sorter);  
  add(jsp);
  setSize(600,400);
  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  setLocationRelativeTo(null);
  setVisible(true);
 }
 @Override
 public void keyTyped(KeyEvent e) {}
 @Override
 public void keyPressed(KeyEvent e) {
  if(e.getKeyCode()==KeyEvent.VK_ENTER){//在最后一行最后一列单元格处,按回车键表格增加一个空行
   int column=jt.getColumnCount()-1;
   int row=jt.getRowCount()-1;
   if(column==jt.getSelectedColumn() && row==jt.getSelectedRow()){
    Object[] empty={new String(),new String(),new Date(),0.0};
    model.addRow(empty);
   }
  }
  if(e.getKeyCode()==KeyEvent.VK_INSERT){//按Insert键插入一个空行
   Object[] empty={new String(),new String(),new Date(),0.0};
   model.insertRow(jt.getSelectedRow(),empty);
  }
  if(e.getKeyCode()==KeyEvent.VK_DELETE){//按Delete键删除当前行
   model.removeRow(jt.getSelectedRow());
  }
 }
 @Override
 public void keyReleased(KeyEvent e) {}
 public static void main(String[] args) {
  new E();
 }
}

运行结果(按价格升序排列,点表头可实现相应列升降序排序)

热心网友

public static void main(String args[]){
JFrame jf = new JFrame("练习");
jf.setSize(500, 200);
//表头
String colName[] = {"姓名","年龄","性别","爱好"};
//数据
Object data[][] = {
{"Tom",new Integer(20),"男","看电视"},
{"John",new Integer(30),"男","看电视"},
{"Sam",22,"女","看电视"},
};
//展示数据
JTable jt = new JTable(data,colName);
//排序功能
jt.setAutoCreateRowSorter(true);
//滚动效果
JScrollPane jsp = new JScrollPane(jt);

jf.add(jsp);
jf.setVisible(true);
}

热心网友

java poi就能实现

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com