📄 multiplerowheaderexample.java
字号:
/* (swing1.1) (swing#1356,#1454) */package tame.examples;import java.awt.BorderLayout;import java.awt.Component;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JViewport;import javax.swing.UIManager;import javax.swing.table.DefaultTableModel;import javax.swing.table.JTableHeader;import javax.swing.table.TableCellRenderer;import tame.table.AttributiveCellTableModel;import tame.table.CellSpan;import tame.table.MultiSpanCellTable;/**<pre> * ---------------------------------------------- * | SNo. | * ---------------------------------------------- * | | 1 | * | Name |----------------------------------- * | | 2 | * ---------------------------------------------- * | | 1 | * | |----------------------------------- * | Language | 2 | * | |----------------------------------- * | | 3 | * ----------------------------------------------..Exception in thread "main" java.lang.NullPointerException at javax.swing.table.DefaultTableModel.getColumnCount(DefaultTableModel.java:575) at javax.swing.table.DefaultTableModel.justifyRows(DefaultTableModel.java:242) at javax.swing.table.DefaultTableModel.newRowsAdded(DefaultTableModel.java:262) at tame.table.AttributiveCellTableModel.setDataVector(AttributiveCellTableModel.java:65)</pre>@author Nobuo Tamemasa@version 1.0 03/06/99*/public class MultipleRowHeaderExample extends JFrame { Object[][] data; Object[] column; JTable table; MultiSpanCellTable fixedTable; public MultipleRowHeaderExample() { super( "Multiple Row Header Example" ); setSize( 400, 150 ); data = new Object[][]{ {"SNo." ,"" }, {"Name" ,"1"}, {"" ,"2"}, {"Language","1"}, {"" ,"2"}, {"" ,"3"}}; column = new Object[]{"",""}; AttributiveCellTableModel fixedModel = new AttributiveCellTableModel(data, column) { public boolean CellEditable(int row, int col) { return false; } }; CellSpan cellAtt =(CellSpan)fixedModel.getCellAttribute(); cellAtt.combine(new int[] {0} ,new int[] {0,1}); cellAtt.combine(new int[] {1,2} ,new int[] {0}); cellAtt.combine(new int[] {3,4,5},new int[] {0}); DefaultTableModel model = new DefaultTableModel(data.length, 3); fixedTable = new MultiSpanCellTable( fixedModel ); table = new JTable( model ); fixedTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); fixedTable.setDefaultRenderer(Object.class, new RowHeaderRenderer(fixedTable)); fixedTable.setGridColor(table.getTableHeader().getBackground()); JScrollPane scroll = new JScrollPane( table ); JViewport viewport = new JViewport(); viewport.setView(fixedTable); viewport.setPreferredSize(fixedTable.getPreferredSize()); scroll.setRowHeaderView(viewport); getContentPane().add(scroll, BorderLayout.CENTER); } public static void main(String[] args) { MultipleRowHeaderExample frame = new MultipleRowHeaderExample(); frame.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit(0); } }); frame.setVisible(true); } class RowHeaderRenderer extends JLabel implements TableCellRenderer { RowHeaderRenderer(JTable table) { JTableHeader header = table.getTableHeader(); setOpaque(true); setBorder(UIManager.getBorder("TableHeader.cellBorder")); setHorizontalAlignment(CENTER); setForeground(header.getForeground()); setBackground(header.getBackground()); setFont(header.getFont()); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText((value == null) ? "" : value.toString()); return this; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -