Swing表格自定义JTable (表格可编辑)
来源:互联网 发布:皮卡丘帐篷淘宝 编辑:程序博客网 时间:2024/05/22 12:27
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->import java.awt.BorderLayout;import java.awt.Color;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.JTableHeader;import javax.swing.table.TableCellRenderer;public class JTableDefineTest extends JFrame{ public JTableDefineTest() { super(); setTitle("表格"); setBounds(100,100,500,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JScrollPane scrollPane = new JScrollPane(); //支持滚动 getContentPane().add(scrollPane,BorderLayout.CENTER); String[] columnNames = {"A","B","C","D","E","F","G"}; Vector columnNameV = new Vector(); //获得表头 for(int column = 0;column<columnNames.length;column++) { columnNameV.add(columnNames[column]); } Vector tableValueV = new Vector(); for(int row = 1;row<21;row++) //获得数据 { Vector rowV = new Vector(); for(int column = 0;column<columnNames.length;column++) { rowV.add(columnNames[column]+row); //数据 } tableValueV.add(rowV); } JTable table = new MyTable(tableValueV,columnNameV); //自定义的表格 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //关闭表格列的自动调整功能。 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); //单选 table.setSelectionBackground(Color.YELLOW); table.setSelectionForeground(Color.RED); table.setRowHeight(30); scrollPane.setViewportView(table); //支持滚动 } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JTableDefineTest jTableDefineTest= new JTableDefineTest(); jTableDefineTest.setVisible(true); }}class MyTable extends JTable //实现自定义类{ /** * */ private static final long serialVersionUID = 1L; public MyTable() { } public MyTable(Vector rowData ,Vector columnNames) { super(rowData,columnNames); } /** * @Override */ public JTableHeader getTableHeader() { JTableHeader tableHeader = super.getTableHeader(); tableHeader.setReorderingAllowed(false); //设置表格列不可重排 DefaultTableCellRenderer hr =(DefaultTableCellRenderer)tableHeader.getDefaultRenderer(); //获得表格头的单元格对象 hr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); //列名居中 return tableHeader; } /** * @Override */ public TableCellRenderer getDefaultRenderer(Class<?>columnClass) { DefaultTableCellRenderer cr =(DefaultTableCellRenderer)super.getDefaultRenderer(columnClass); cr.setHorizontalAlignment(DefaultTableCellRenderer.CENTER); //单元格内容居中 return cr; } /** * @Override */ public boolean isCellEditable(int row,int column) { return false; //单元格不可修改 }}