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

📄 sortabletableexample.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
/* (swing1.1) */package tame.examples;import java.awt.BorderLayout;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.text.DateFormat;import java.text.ParseException;import java.util.Date;import java.util.Locale;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.JTableHeader;import javax.swing.table.TableColumnModel;import tame.table.SortButtonRenderer;import tame.table.SortableTableModel;/**@author Nobuo Tamemasa@version 1.0 02/25/99*/public class SortableTableExample extends JPanel {  public SortableTableExample(){    setLayout(new BorderLayout());    String[] headerStr = {"Name","Date","Size","Dir"};    int[] columnWidth = {100,150,100,50};    SortableTableModel dm = new SortableTableModel() {      public Class getColumnClass(int col) {        switch (col) {          case  0: return String.class;          case  1: return Date.class;          case  2: return Integer.class;          case  3: return Boolean.class;          default: return Object.class;        }      }      public boolean isCellEditable(int row, int col) {        switch (col) {          case  1: return false;          default: return true;        }      }      public void setValueAt(Object obj, int row, int col) {        switch (col) {          case  2: super.setValueAt(new Integer(obj.toString()), row, col); return;          default: super.setValueAt(obj, row, col); return;        }      }    };    dm.setDataVector(new Object[][]{      {"b"   ,getDate("98/12/02"),new Integer(14),new Boolean(false)},      {"a"   ,getDate("99/01/01"),new Integer(67),new Boolean(false)},      {"d"   ,getDate("99/02/11"),new Integer(2) ,new Boolean(false)},      {"c"   ,getDate("99/02/27"),new Integer(7) ,new Boolean(false)},      {"foo" ,new Date()         ,new Integer(5) ,new Boolean(true)},      {"bar" ,new Date()         ,new Integer(10),new Boolean(true)}},      headerStr);    JTable table = new JTable(dm);    //table.setShowGrid(false);    table.setShowVerticalLines(true);    table.setShowHorizontalLines(false);    SortButtonRenderer renderer = new SortButtonRenderer();    TableColumnModel model = table.getColumnModel();    int n = headerStr.length;    for (int i=0;i<n;i++) {      model.getColumn(i).setHeaderRenderer(renderer);      model.getColumn(i).setPreferredWidth(columnWidth[i]);    }    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("SortableTable Example");    f.getContentPane().add(new SortableTableExample(), BorderLayout.CENTER);    f.setSize(400, 160);    f.setVisible(true);    f.addWindowListener(new WindowAdapter() {      public void windowClosing(WindowEvent e) {System.exit(0);}    });  }  private static DateFormat dateFormat =    DateFormat.getDateInstance(DateFormat.SHORT, Locale.JAPAN);  private static Date getDate(String dateString) {    Date date = null;    try {      date = dateFormat.parse(dateString);    } catch(ParseException ex) {      date = new Date();    }    return date;  }  class HeaderListener extends MouseAdapter {    JTableHeader   header;    SortButtonRenderer renderer;    HeaderListener(JTableHeader header,SortButtonRenderer renderer) {      this.header   = header;      this.renderer = renderer;    }    public void mousePressed(MouseEvent e) {      int col = header.columnAtPoint(e.getPoint());      int sortCol = header.getTable().convertColumnIndexToModel(col);      renderer.setPressedColumn(col);      renderer.setSelectedColumn(col);      header.repaint();      if (header.getTable().isEditing()) {        header.getTable().getCellEditor().stopCellEditing();      }      boolean isAscent;      if (SortButtonRenderer.DOWN == renderer.getState(col)) {        isAscent = true;      } else {        isAscent = false;      }      ((SortableTableModel)header.getTable().getModel())        .sortByColumn(sortCol, isAscent);    }    public void mouseReleased(MouseEvent e) {      int col = header.columnAtPoint(e.getPoint());      renderer.setPressedColumn(-1);                // clear      header.repaint();    }  }}

⌨️ 快捷键说明

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