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就能实现