首页>代码>JAVA.2核心技术.第1卷:基础知识(原书第7版) 源代码>/JAVA.2核心技术.第1卷:基础知识(原书第7版) 源代码/v1ch10/AppletApplication/CalculatorApplet.java
/** @version 1.31 2004-05-07 @author Cay Horstmann */ import java.awt.*; import java.awt.event.*; import javax.swing.*; public class CalculatorApplet extends JApplet { public void init() { add(new CalculatorPanel()); } } /** A panel with calculator buttons and a result display. */ class CalculatorPanel extends JPanel { public CalculatorPanel() { setLayout(new BorderLayout()); result = 0; lastCommand = "="; start = true; // add the display display = new JLabel("0"); add(display, BorderLayout.NORTH); ActionListener insert = new InsertAction(); ActionListener command = new CommandAction(); // add the buttons in a 4 x 4 grid panel = new JPanel(); panel.setLayout(new GridLayout(4, 4)); addButton("7", insert); addButton("8", insert); addButton("9", insert); addButton("/", command); addButton("4", insert); addButton("5", insert); addButton("6", insert); addButton("*", command); addButton("1", insert); addButton("2", insert); addButton("3", insert); addButton("-", command); addButton("0", insert); addButton(".", insert); addButton("=", command); addButton("+", command); add(panel, BorderLayout.CENTER); } /** Adds a button to the center panel. @param label the button label @param listener the button listener */ private void addButton(String label, ActionListener listener) { JButton button = new JButton(label); button.addActionListener(listener); panel.add(button); } /** This action inserts the button action string to the end of the display text. */ private class InsertAction implements ActionListener { public void actionPerformed(ActionEvent event) { String input = event.getActionCommand(); if (start) { display.setText(""); start = false; } display.setText(display.getText() + input); } } /** This action executes the command that the button action string denotes. */ private class CommandAction implements ActionListener { public void actionPerformed(ActionEvent event) { String command = event.getActionCommand(); if (start) { if (command.equals("-")) { display.setText(command); start = false; } else lastCommand = command; } else { calculate(Double.parseDouble(display.getText())); lastCommand = command; start = true; } } } /** Carries out the pending calculation. @param x the value to be accumulated with the prior result. */ public void calculate(double x) { if (lastCommand.equals("+")) result += x; else if (lastCommand.equals("-")) result -= x; else if (lastCommand.equals("*")) result *= x; else if (lastCommand.equals("/")) result /= x; else if (lastCommand.equals("=")) result = x; display.setText("" + result); } private JLabel display; private JPanel panel; private double result; private String lastCommand; private boolean start; }


linmou LV8
2023年3月19日
徐寿亮 LV1
2021年4月21日
高欢胜 LV1
2021年3月29日
2196316269 LV10
2021年2月24日
13043860zj LV16
2020年9月24日
xcj456 LV8
2020年9月12日
szy2503 LV2
2020年8月10日
16692039904 LV2
2020年6月25日
fighter919 LV1
2020年5月6日
hb2008 LV3
2020年4月25日