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

📄 cellbordertableexample.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
/* (swing1.1)*/package tame.examples;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.GridLayout;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import javax.swing.Box;import javax.swing.BoxLayout;import javax.swing.JButton;import javax.swing.JCheckBox;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.ListSelectionModel;import javax.swing.UIManager;import javax.swing.border.Border;import javax.swing.border.TitledBorder;import javax.swing.table.DefaultTableModel;import tame.border.LinesBorder;import tame.table.BorderCellRenderer;import tame.table.CellBorder;/**@author Nobuo Tamemasa@version 1.0  3/06/99*/public class CellBorderTableExample extends JFrame {  public CellBorderTableExample() {    super( "Cell Border Example" );    final Color color = UIManager.getColor("Table.gridColor");    DefaultTableModel dm = new DefaultTableModel(12,6) {      public void setValueAt(Object obj, int row, int col) {        if (obj instanceof MyData) {          super.setValueAt(obj, row, col);        } else {          MyData myData=null;          Object oldObject = getValueAt(row, col);          if (oldObject == null) {            myData = new MyData(obj, new LinesBorder(color,0));          } else if (oldObject instanceof MyData) {            myData = (MyData)oldObject;          } else {            System.out.println("error");            return;          }          myData.setObject(obj);          super.setValueAt(myData, row, col);        }      }    };    JTable table = new JTable( dm );    table.setIntercellSpacing(new Dimension(0,0));    table.setCellSelectionEnabled(true);    table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);    table.setDefaultRenderer(Object.class, new BorderCellRenderer());    JScrollPane scroll = new JScrollPane( table );    ThicknessPanel thicknessPanel = new ThicknessPanel();    Box box = new Box(BoxLayout.Y_AXIS);    box.add(thicknessPanel);    box.add(new ButtonPanel(table, thicknessPanel));    getContentPane().add(scroll, BorderLayout.CENTER);    getContentPane().add(box,    BorderLayout.EAST);  }  public static void main(String[] args) {    CellBorderTableExample frame = new CellBorderTableExample();    frame.addWindowListener( new WindowAdapter() {      public void windowClosing( WindowEvent e ) {	System.exit(0);      }    });    frame.setSize( 400, 240 );    frame.setVisible(true);  }  class ThicknessPanel extends JPanel {    JComboBox[] combos;    ThicknessPanel() {      String[] str = {"top","left","bottom","right"};      int n = str.length;      setLayout(new GridLayout(n,2));      setBorder(new TitledBorder("Thickness"));      combos = new JComboBox[n];      for (int i=0;i<n;i++) {        combos[i] = new JComboBox(new Object[]{"0","1","2","3"});        add(new JLabel(str[i]));        add(combos[i]);      }    }    public Insets getThickness() {      Insets insets = new Insets(0,0,0,0);      insets.top    = combos[0].getSelectedIndex();      insets.left   = combos[1].getSelectedIndex();      insets.bottom = combos[2].getSelectedIndex();      insets.right  = combos[3].getSelectedIndex();      return insets;    }  }  class ButtonPanel extends JPanel {    JTable table;    ThicknessPanel thicknessPanel;    Color color = UIManager.getColor("Table.gridColor");    ButtonPanel(JTable table, ThicknessPanel thicknessPanel) {      this.table = table;      this.thicknessPanel = thicknessPanel;      setLayout(new GridLayout(3,1));      setBorder(new TitledBorder("Append Lines"));      final JCheckBox oneBlock = new JCheckBox("Block");      JButton b_and = new JButton("REPLACE");      JButton b_or  = new JButton("OR");      add(oneBlock);      add(b_and);      add(b_or);      b_and.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          setCellBorder(true, oneBlock.isSelected());        }      });      b_or.addActionListener(new ActionListener() {        public void actionPerformed(ActionEvent e) {          setCellBorder(false, oneBlock.isSelected());        }      });    }    private void setCellBorder(boolean isReplace, boolean isBlock) {      boolean isTop,isLeft,isBottom,isRight;      Insets insets = thicknessPanel.getThickness();      int[] columns = table.getSelectedColumns();      int[] rows    = table.getSelectedRows();      int rowMax    = rows.length;      int columnMax = columns.length;      for (int i=0;i<rowMax;i++) {        int row = rows[i];        isTop    = (i == 0       )? true: false;        isBottom = (i == rowMax-1)? true: false;        for (int j=0;j<columnMax;j++) {	  int column = columns[j];          isLeft  = (j == 0          )? true: false;          isRight = (j == columnMax-1)? true: false;	  MyData myData = (MyData)table.getValueAt(row, column);	  if (myData == null) {	    myData = new MyData("", new LinesBorder(color,0));	  }	  LinesBorder border = (LinesBorder)myData.getBorder();	  if (isBlock) {	    Insets tmp = new Insets(0,0,0,0);	    if (isTop)    tmp.top    = Math.max(tmp.top    ,insets.top);	    if (isLeft)   tmp.left   = Math.max(tmp.left   ,insets.left);	    if (isBottom) tmp.bottom = Math.max(tmp.bottom ,insets.bottom);	    if (isRight)  tmp.right  = Math.max(tmp.right  ,insets.right);	    border.append(tmp, isReplace);	  } else {	    border.append(insets, isReplace);	  }	  table.setValueAt(myData, row, column);	}      }      table.clearSelection();      table.revalidate();      table.repaint();    }  }  class MyData implements CellBorder {    private Border border;    private Object obj;    public MyData(Object obj, Border border) {      this.obj    = obj;      this.border = border;    }    public void setObject(Object obj) {      this.obj = obj;    }    public String toString() {      return obj.toString();    }    // CellBorder    public void setBorder(Border border) {      this.border = border;    }    public Border getBorder() {      return border;    }    public void setBorder(Border border, int row, int col) {}    public Border getBorder(int row, int col) { return null; }  }}

⌨️ 快捷键说明

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