📄 calculatorjapplet.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/* 定义一个JPanel类的直接子类且是ActionListener接口的实现类作为动作事件监听器 */
class CalculatorJPanel extends JPanel implements ActionListener {
private JTextField display; // Swing文本域组件display作为私有成员变量
private double arg = 0;
private String op = "=";
private boolean start = true; //标志量
public CalculatorJPanel()
{ int rows = 4, cols = 4;
setLayout( new BorderLayout() );
//调用从间接超类Container继承的setLayout(),把Swing面板组件设置为边框式布局管理器
display = new JTextField( "0" );// 创建一个Swing文本域组
display.setEditable( false );
/* 调用从父类继承的JTextComponent()方法,把Swing文本域组件设置为不可编辑 */
add( display, "North" ); // 把Swing文本域组件display添加给Swing面板组件放在北边
JPanel p = new JPanel(); // 创建一个Swing面板子组件p
p.setLayout(new GridLayout( rows, cols )); // 把Swing面板子组件p设置为网格式布局管理器
String buttons = "789/456*123-0.=+";
for( int i = 0; i < buttons.length(); i++ )
addButton( p, buttons.substring( i, i + 1 ) );
// 按顺序取出一个字符作为按键的字符标签,创建一个Swing按钮组件添加到面板子组件p中
add( p, "Center" ); // 把Swing面板子组件p添加到父面板组件中
}
// 把Swing按钮组件添加给形参c所指的容器内的方法
private void addButton( Container c, String s )
{ JButton b = new JButton( s ); //第2个参数指定按键的字符标签
c.add( b ); // 把Swing按钮组件b添加给形参c所指的容器组件
b.addActionListener( this );
/* 把父容器组件(即this所指的本类一个对象)作为动作监听器注册给按钮组件b */
}
// 实现ActionListener接口所声明的、处理动作事件的方法
public void actionPerformed( ActionEvent evt )
{ String s = evt.getActionCommand();
/* 调用ActionEvent类的getActionCommand()方法获取动作事件命令字符串,
即计算器按键的字符标签,如-,0,1,2...等,并用s指向它 */
if( '0' <= s.charAt(0) && s.charAt(0) <= '9' || s.equals(".") ) {
if( start ) display.setText( s );
else display.setText( display.getText() + s );
start = false;
}
else { if ( start ) {
if( s.equals( "-" ) ) { display.setText( s ); start = false; }
else op = s; // 若输入的是第1个字符不是"-"则它是+、*和/等运算符,则赋给私有成员变量op
}
else { double x = Double.parseDouble( display.getText() );
calculate( x );
op = s;
start = true;
}
}
}
public void calculate( double n )
{ if( op.equals( "+" ) ) arg += n;
else if( op.equals( "-" ) ) arg -= n;
else if( op.equals( "*" ) ) arg *= n;
else if( op.equals( "/" ) ) arg /= n;
else if( op.equals( "=" ) ) arg = n;
display.setText( "" + arg );
}
}
public class CalculatorJApplet extends JApplet
{ public void init()
{ Container contentPane = getContentPane();
contentPane.add( new CalculatorJPanel() );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -