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

📄 columnbuttonscrollpane.java

📁 Java中Swing界面库中几个类使用的例子
💻 JAVA
字号:
package jp.gr.java_conf.tame.swing.panel;import java.util.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.border.*;import javax.swing.table.*;import javax.swing.event.*;import jp.gr.java_conf.tame.swing.layout.*;import jp.gr.java_conf.tame.swing.border.*;import jp.gr.java_conf.tame.swing.icon.*;/** * @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 + -