📄 exercise20_6.java
字号:
// Exercise20_6.java: Convert currency
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.text.*;
import java.util.*;
public class Exercise20_6 extends JApplet implements ActionListener {
// Text fields for US dollars, Canadian dollars, German marks
// and British pounds
JTextField jtfUSDollars = new JTextField();
JTextField jtfCanadianDollars = new JTextField();
JTextField jtfGermanMarks = new JTextField();
JTextField jtfBritishPounds = new JTextField();
// Text fields for excahnge rates
JTextField jtfCanadianDollarsRate = new JTextField();
JTextField jtfGermanMarksRate = new JTextField();
JTextField jtfBritishPoundsRate = new JTextField();
// Button to convert currencies
JButton jbtConvert = new JButton("Convert");
// Number formater
NumberFormat nfCanada = NumberFormat.getCurrencyInstance(Locale.CANADA);
NumberFormat nfGerman = NumberFormat.getCurrencyInstance(Locale.GERMAN);
NumberFormat nfUK = NumberFormat.getCurrencyInstance(Locale.UK);
public void init() {
// Panel p1 to hold the text field and button for US dollars
JPanel p1 = new JPanel();
p1.setLayout(new BorderLayout());
p1.add(new JLabel("US Dollars"), BorderLayout.WEST);
p1.add(jtfUSDollars, BorderLayout.CENTER);
p1.add(jbtConvert, BorderLayout.EAST);
p1.setBorder(new TitledBorder("Enter Dollar Amount"));
// Panel p2 to hold the text field and button for US dollars
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(4, 3));
p2.add(new JLabel());
p2.add(new JLabel("Exchange Rate"));
p2.add(new JLabel("Converted Amount"));
p2.add(new JLabel("Canadian Dollars"));
p2.add(jtfCanadianDollarsRate);
p2.add(jtfCanadianDollars);
p2.add(new JLabel("German Marks"));
p2.add(jtfGermanMarksRate);
p2.add(jtfGermanMarks);
p2.add(new JLabel("British Pounds"));
p2.add(jtfBritishPoundsRate);
p2.add(jtfBritishPounds);
p2.setBorder(new TitledBorder("Display Exchange"));
// Set the text fields properties
jtfCanadianDollars.setEditable(false);
jtfGermanMarks.setEditable(false);
jtfBritishPounds.setEditable(false);
jtfUSDollars.setHorizontalAlignment(JTextField.RIGHT);
jtfCanadianDollars.setHorizontalAlignment(JTextField.RIGHT);
jtfGermanMarks.setHorizontalAlignment(JTextField.RIGHT);
jtfBritishPounds.setHorizontalAlignment(JTextField.RIGHT);
jtfCanadianDollarsRate.setHorizontalAlignment(JTextField.RIGHT);
jtfGermanMarksRate.setHorizontalAlignment(JTextField.RIGHT);
jtfBritishPoundsRate.setHorizontalAlignment(JTextField.RIGHT);
// Add panels to the frame
this.getContentPane().add(p1, BorderLayout.NORTH);
this.getContentPane().add(p2, BorderLayout.CENTER);
// Register listener
jbtConvert.addActionListener(this);
}
// Handle ActionEvent
public void actionPerformed(ActionEvent e) {
if (e.getSource() == jbtConvert) {
double USDollars = new Double(jtfUSDollars.getText().trim()).doubleValue();
double rateCanada = new Double(jtfCanadianDollarsRate.getText().trim()).doubleValue();
double rateGermany = new Double(jtfGermanMarksRate.getText().trim()).doubleValue();
double rateBritan = new Double(jtfBritishPoundsRate.getText().trim()).doubleValue();
jtfCanadianDollars.setText(nfCanada.format(USDollars*rateCanada));
jtfGermanMarks.setText(nfGerman.format(USDollars*rateGermany));
jtfBritishPounds.setText(nfUK.format(USDollars*rateBritan));
}
}
// Main method
public static void main(String[] args) {
// Create a frame
JFrame frame = new JFrame("Exchange Currencies");
// Create an instance of the applet
Exercise20_6 applet = new Exercise20_6();
// Add the applet instance to the frame
frame.getContentPane().add(applet, BorderLayout.CENTER);
// Invoke init() and start()
applet.init();
applet.start();
// Display the frame
frame.pack();
frame.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -