pushableheaderexample.java
来自「tame,扩展了好多SWing组件:JTable」· Java 代码 · 共 102 行
JAVA
102 行
/* (swing1.1) */package tame.examples;import java.awt.BorderLayout;import java.awt.Component;import java.awt.Insets;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;import javax.swing.table.JTableHeader;import javax.swing.table.TableCellRenderer;import javax.swing.table.TableColumnModel;/**@author Nobuo Tamemasa@version 1.0 02/25/99*/public class PushableHeaderExample extends JPanel { public PushableHeaderExample(){ setLayout(new BorderLayout()); String[] headerStr = {"Push","me","here"}; DefaultTableModel dm = new DefaultTableModel(headerStr, 4); JTable table = new JTable(dm); ButtonHeaderRenderer renderer = new ButtonHeaderRenderer(); TableColumnModel model = table.getColumnModel(); int n = headerStr.length; for (int i=0;i<n;i++) { model.getColumn(i).setHeaderRenderer(renderer); } JTableHeader header = table.getTableHeader(); header.addMouseListener(new HeaderListener(header,renderer)); JScrollPane pane = new JScrollPane(table); add(pane, BorderLayout.CENTER); } public static void main(String[] args) { JFrame f= new JFrame("PushableHeaderTable Example"); f.getContentPane().add(new PushableHeaderExample(), BorderLayout.CENTER); f.setSize(400, 100); f.setVisible(true); f.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); } class HeaderListener extends MouseAdapter { JTableHeader header; ButtonHeaderRenderer renderer; HeaderListener(JTableHeader header,ButtonHeaderRenderer renderer) { this.header = header; this.renderer = renderer; } public void mousePressed(MouseEvent e) { int col = header.columnAtPoint(e.getPoint()); renderer.setPressedColumn(col); header.repaint(); System.out.println("Ouch! " + col); } public void mouseReleased(MouseEvent e) { int col = header.columnAtPoint(e.getPoint()); renderer.setPressedColumn(-1); // clear header.repaint(); } } class ButtonHeaderRenderer extends JButton implements TableCellRenderer { int pushedColumn; public ButtonHeaderRenderer() { pushedColumn = -1; setMargin(new Insets(0,0,0,0)); } public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { setText((value ==null) ? "" : value.toString()); boolean isPressed = (column == pushedColumn); getModel().setPressed(isPressed); getModel().setArmed(isPressed); return this; } public void setPressedColumn(int col) { pushedColumn = col; } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?