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

📄 converter.java

📁 Generics and the greatly expanded collection libraries have tremendously increased the power of Ja
💻 JAVA
字号:
package com.converter;import java.util.*;import javax.swing.*;import javax.swing.event.*;import java.awt.*;import java.awt.event.*;enum Currency { DOLLAR, EURO, POUND }interface CView extends Observer<CModel,CView,Currency> {}class RateView extends JTextField implements CView {    private final CModel model;    private final Currency currency;    public RateView(final CModel model,		      final Currency currency) {	this.model = model;	this.currency = currency;	addActionListener( new ActionListener(){		public void actionPerformed(ActionEvent e) {		    double rate = Double.parseDouble( getText() );		    model.setRate(currency, rate);		}	    });	model.addObserver( this );    }    public void update(CModel model, Currency currency) {	if (this.currency==currency) {	    double rate = model.getRate(currency);	    setText(String.format("%10.6f", rate));	}    }}class ValueView extends JTextField implements CView {    private final CModel model;    private final Currency currency;    public ValueView(final CModel model,		     final Currency currency) {	this.model = model;	this.currency = currency;	addActionListener( new ActionListener(){		public void actionPerformed(ActionEvent e) {		    double value = Double.parseDouble( getText() );		    model.setValue(currency, value);		}	    });	model.addObserver( this );    }    public void update(CModel model, Currency currency) {	if (currency==null || currency==this.currency) {	    double value = model.getValue(this.currency);	    setText(String.format("%15.2f", value));	}    }}class CModel extends Observable<CModel,CView,Currency> {    private final EnumMap<Currency,Double> rates;    private long value;  // in cents    public CModel() {	rates = new EnumMap<Currency,Double>(Currency.class);    }    public void initialize(double... initialRates) {	for (int i=0; i<initialRates.length; i++)	    setRate(Currency.values()[i], initialRates[i]);    }    public void setRate(Currency c, double f) {	rates.put(c,f);	setChanged();	notifyObservers(c);    }    public void setValue(Currency c, double v) {	value = Math.round(v/getRate(c) * 100);	setChanged();	notifyObservers(null);    }    public double getRate(Currency c) { return rates.get(c); }    public double getValue(Currency c) { return value*getRate(c)/100; }}class Converter extends JFrame {    public Converter() {	CModel model = new CModel();	setTitle( "Currency converter");	setLayout( new GridLayout( Currency.values().length+1, 3 ) );	add( new JLabel( "currency" ));	add( new JLabel( "rate" ));	add( new JLabel( "value" ));	for (Currency c : Currency.values()) {	    add( new JLabel( c.name() ));	    add( new RateView(model, c) );	    add( new ValueView(model, c) );	}	model.initialize(1.0, 0.83, 0.56);	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);	pack();  }  public static void main(String[] args) {    new Converter().setVisible( true );  }}

⌨️ 快捷键说明

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