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

📄 columnbuttonscrollpane.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
package tame.panel;import java.awt.Component;import java.awt.Graphics;import java.awt.GridLayout;import java.awt.Insets;import java.awt.SystemColor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.Stack;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.SwingConstants;import javax.swing.UIManager;import javax.swing.table.JTableHeader;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;import tame.border.LinesBorder;import tame.icon.ArrowIcon;import tame.layout.ColumnButtonScrollPaneLayout;/**@author Nobuo Tamemasa@version 1.0 05/31/99*/public class ColumnButtonScrollPane extends JScrollPane {  Component columnButton;  public ColumnButtonScrollPane(JTable table) {    super(table);    TableColumnModel cm = table.getColumnModel();    LimitedTableHeader header = new LimitedTableHeader(cm);    table.setTableHeader(header);    columnButton = createUpperCorner(header);    setCorner(UPPER_RIGHT_CORNER, columnButton);    setVerticalScrollBarPolicy(VERTICAL_SCROLLBAR_ALWAYS);    ColumnButtonScrollPaneLayout layout = new ColumnButtonScrollPaneLayout();    setLayout(layout);    layout.syncWithScrollPane(this);  }  protected Component createUpperCorner(JTableHeader header) {    ColumnButton corner = new ColumnButton(header);    return corner;  }  public class LimitedTableHeader extends JTableHeader {    public LimitedTableHeader(TableColumnModel cm) {      super(cm);    }    // actually, this is a not complete way. but easy one.    // you can see last column painted wider, short time :)    // If you don't like this kind cheap fake,    // you have to overwrite the paint method in UI class.    public void paintComponent(Graphics g) {      super.paintComponent(g);      columnButton.repaint();    }  }  public class ColumnButton extends JPanel {    JTable table;    TableColumnModel cm;    JButton revealButton;    JButton hideButton;    Stack stack;    public ColumnButton(JTableHeader header) {      setLayout(new GridLayout(1,2));      setBorder(new LinesBorder(SystemColor.controlShadow, new Insets(0,1,0,0)));      stack = new Stack();      table = header.getTable();      cm    = table.getColumnModel();      revealButton = createButton(header, SwingConstants.WEST);      hideButton   = createButton(header, SwingConstants.EAST);      add(revealButton);      add(hideButton);      revealButton.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          TableColumn column = (TableColumn)stack.pop();          cm.addColumn(column);          if (stack.empty()) {            revealButton.setEnabled(false);          }          hideButton.setEnabled(true);          table.sizeColumnsToFit(-1);        }      });      hideButton.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          int n = cm.getColumnCount();          TableColumn column = cm.getColumn(n -1);          stack.push(column);          cm.removeColumn(column);          if (n < 3) {            hideButton.setEnabled(false);          }          revealButton.setEnabled(true);          table.sizeColumnsToFit(-1);        }      });      if (1 < cm.getColumnCount()) {        hideButton.setEnabled(true);      } else {        hideButton.setEnabled(false);      }      revealButton.setEnabled(false);    }    protected JButton createButton(JTableHeader header,                                   int direction) {      //int iconHeight = header.getPreferredSize().height - 6;      int iconHeight = 8;      JButton button = new JButton();      button.setIcon(new ArrowIcon(iconHeight, direction, true));      button.setDisabledIcon(new ArrowIcon(iconHeight, direction, false));      button.setRequestFocusEnabled(false);      button.setForeground(header.getForeground());      button.setBackground(header.getBackground());      button.setBorder(UIManager.getBorder("TableHeader.cellBorder"));      return button;    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -