java多表头_java 多表头表格的实现

展开全部

按照你的要求编写的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={"书名","图书作者","发行时32313133353236313431303231363533e78988e69d8331333363366136间","价格"};

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();

}

}

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

java多表头_java 多表头表格的实现_第1张图片

你可能感兴趣的:(java多表头)