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

📄 totalrowexample.java

📁 tame,扩展了好多SWing组件:JTable
💻 JAVA
字号:
/* (swing1.1beta3) swing#960 */package tame.examples;import java.awt.Container;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.text.DecimalFormat;import java.text.ParseException;import java.util.Vector;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.event.ChangeEvent;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableModel;/**@author Nobuo Tamemasa@version 1.0 12/03/98*/public class TotalRowExample extends JFrame {  final private int TOTAL_ROW    = 3;  final private int TOTAL_COLUMN = 1;  TotalRowExample() {    super( "Total Row Example" );    final DecimalFormat formatter = new DecimalFormat("###,##0.00");    DefaultTableModel dm = new DefaultTableModel() {      public void setValueAt(Object value, int row, int col) {        Vector rowVector = (Vector)dataVector.elementAt(row);        if (col == TOTAL_COLUMN) {          Double d = null;          if (value instanceof Double) {            d = (Double)value;          } else {            try {              d = new Double(                ((Number)formatter.parse((String)value)).doubleValue());            } catch (ParseException ex) {              d = new Double(0.0);            }          }          rowVector.setElementAt(d, col);        } else {          rowVector.setElementAt(value, col);        }      }      public boolean isCellEditable(int row, int col) {        if (row == TOTAL_ROW) return false;        return true;      }      public Class getColumnClass(int col) {        if (col == TOTAL_COLUMN) return Number.class;        return String.class;      }    };    dm.setDataVector(      new Object[][]{        {"coffee",new Double(0.0)},        {"tea"   ,new Double(0.0)},        {"cocoa" ,new Double(0.0)},        {"total" ,new Double(0.0)}},      new Object[]{"Item","Price"});    JTable table = new JTable( dm ) {      public void editingStopped(ChangeEvent e) {        super.editingStopped(e);        reCalcurate(getModel());        repaint();      }    };    table.getColumn("Price").setCellRenderer(             new DecimalRenderer(formatter));    JScrollPane scroll  = new JScrollPane(table);    Container content = getContentPane();    content.add(scroll);    setSize( 300, 120 );    setVisible(true);  }  private void reCalcurate(TableModel ml) {    if (ml == null) return;    double total = 0.0;    for (int i=0;i<TOTAL_ROW;i++) {      total += ((Double)ml.getValueAt(i,TOTAL_COLUMN)).doubleValue();    }    ml.setValueAt(new Double(total),TOTAL_ROW,TOTAL_COLUMN);  }  public static void main(String[] args) {    TotalRowExample frame = new TotalRowExample();    frame.addWindowListener( new WindowAdapter() {      public void windowClosing( WindowEvent e ) {	System.exit(0);      }    });  }}/**@author Nobuo Tamemasa@version 1.0 12/03/98*/class DecimalRenderer extends DefaultTableCellRenderer {  DecimalFormat  formatter;  DecimalRenderer(String pattern) {    this(new DecimalFormat(pattern));  }  DecimalRenderer(DecimalFormat formatter) {    this.formatter = formatter;    setHorizontalAlignment(JLabel.RIGHT);  }  public void setValue(Object value) {    setText((value == null) ? ""      : formatter.format(((Double)value).doubleValue()));  }}

⌨️ 快捷键说明

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