* 没有实做 ActionListener 的抽象方法 public void actionPerformed(ActionEvent e)
* 然后 JTextArea并没有 JTextArea(int) 这个建构子
* public void windowClosing(WindowEvent e) { System.exit(0); } 跟
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 的意义可以说是一样 留一种就好了
* 还有就是....缩排阿!!
(如果用[TAB]键可能会被吃掉 请用3~4个空白来替代)
参考看看
复制程式
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//拿掉没用到的 import
public class NewSun extends JFrame implements ActionListener {
//static String datamem[] = new String[10]; //没用到
JLabel lb1, lb2, lb3;
JButton bt1, bt2;
JTextField tx1, tx2, tx3, tx4; // tx4 由 JTextArea 改为 JTextField
//static int i = 1; //没用到
public NewSun() {
setLayout(null);
lb1 = new JLabel("简易计算机");
lb1.setForeground(Color.red);
lb1.setSize(240, 40);
lb1.setLocation(10, 20);
add(lb1);
lb2 = new JLabel("输入数字:");
lb2.setForeground(Color.black);
lb2.setSize(240, 40);
lb2.setLocation(10, 95);
add(lb2);
lb3 = new JLabel("=");
lb3.setForeground(Color.black);
lb3.setSize(240, 40);
lb3.setLocation(435, 95);
add(lb3);
tx1 = new JTextField(10);
tx1.setForeground(Color.red);
tx1.setSize(100, 30);
tx1.setLocation(75, 100);
add(tx1);
tx2 = new JTextField(10);
tx2.setForeground(Color.blue);
tx2.setSize(100, 30);
tx2.setLocation(200, 100);
add(tx2);
tx3 = new JTextField(10);
tx3.setForeground(Color.red);
tx3.setSize(100, 30);
tx3.setLocation(325, 100);
add(tx3);
tx4 = new JTextField(15); //由 JTextArea 改为 JTextField
tx4.setForeground(Color.blue);
tx4.setSize(100, 30);
tx4.setLocation(450, 100);
add(tx4);
bt1 = new JButton("计算");
bt1.setSize(100, 30);
bt1.setLocation(135, 200);
//bt1.setBorderPainted(true); //预设就是这个状态了
//bt1.setEnabled(true); //预设就是这个状态了
add(bt1);
bt2 = new JButton("离开");
bt2.setSize(100, 30);
bt2.setLocation(380, 200);
//bt1.setBorderPainted(true); //预设就是这个状态了
//bt1.setEnabled(true); //预设就是这个状态了
add(bt2);
bt1.addActionListener(this);
bt2.addActionListener(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600, 300);
setVisible(true);
}
/*public void setBackground(Color c) {
getContentPane().setBackground(c);
}// 没用到*/
/**
* 实作 ActionListener 比需要复写的抽象方法
* 元件对this注册要处理action事件后
* 执行期间一旦元件被action就会呼叫这个副程式起来执行
* 参数:e是整个action事件的内容, 当中包含一些触发这个事件的资讯
* 像是"哪个元件触发这事件"之类的
*/
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(bt1)) { //从事件包中的"来源"判断该做得事
double src1 = Double.parseDouble(tx1.getText()),
src2 = Double.parseDouble(tx3.getText());
if (tx2.getText().equals("+")) {
tx4.setText(String.valueOf(src1 + src2));
} else if (tx2.getText().equals("-")) {
tx4.setText(String.valueOf(src1 - src2));
} else if (tx2.getText().equals("*")) {
tx4.setText(String.valueOf(src1 * src2));
} else if (tx2.getText().equals("/")) {
tx4.setText(String.valueOf(src1 / src2));
}
} else if (e.getSource().equals(bt2)) {
System.exit(0);
}
}
public static void main(String[] args) {
NewSun sun = new NewSun();
/*sun.addWindowListener(
new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);// 跟 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) 功能重复*/
}
}