⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pushableheaderexample.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
/* (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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -