点击表头

来源:互联网 发布:数控编程培训洛阳 编辑:程序博客网 时间:2024/04/28 00:43
/* (swing1.1) *///package jp.gr.java_conf.tame.swing.examples;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.table.*;import jp.gr.java_conf.tame.swing.table.*;/** * @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;    }  }}
原创粉丝点击