设计思想:
设计一个计算器界面,应用Swing 需要联合两个布局管理器,首先将16个按钮放在一个"使用了GridLayout布局的"Panel上,
然后将这个Panel和文本框放在使用BorderLayout布局管理的主框架窗口中
1: import java.awt.Container;
2: import java.awt.GridLayout;
3: import java.awt.event.ActionEvent;
4: import java.awt.event.ActionListener;
5: import javax.swing.JButton;
6: import javax.swing.JFrame;
7: import javax.swing.JPanel;
8: import javax.swing.JTextField;
9:
10: public class Calculator implements ActionListener {
11:
12: // 设计一个计算器界面,应用Swing 需要联合两个布局管理器,首先将16个按钮放在一个"使用了GridLayout布局的"Panel上,
13: // 然后将这个Panel和文本框放在使用BorderLayout布局管理的主框架窗口中
14:
15: JFrame jf = new JFrame("Calculator");
16: JTextField tf = new JTextField();
17:
18: public void init() {
19: Container c = jf.getContentPane(); // 不能直接在JFrame上增加子部件和设置布局,只能用以下方法
20: tf.setHorizontalAlignment(JTextField.RIGHT);// 对齐方式
21: c.add(tf, "North");
22: JPanel pnl = new JPanel();
23: c.add(pnl, "Center");
24: pnl.setLayout(new GridLayout(4, 4));
25: JButton b = new JButton("1");
26: b.addActionListener(this);
27: pnl.add(b);
28: b = new JButton("2");
29: b.addActionListener(this);
30: pnl.add(b);
31: b = new JButton("3");
32: b.addActionListener(this);
33: pnl.add(b);
34: b = new JButton("+");
35: b.addActionListener(this);
36: pnl.add(b);
37: b = new JButton("4");
38: b.addActionListener(this);
39: pnl.add(b);
40: b = new JButton("5");
41: b.addActionListener(this);
42: pnl.add(b);
43: b = new JButton("6");
44: b.addActionListener(this);
45: pnl.add(b);
46: b = new JButton("-");
47: b.addActionListener(this);
48: pnl.add(b);
49: b = new JButton("7");
50: b.addActionListener(this);
51: pnl.add(b);
52: b = new JButton("8");
53: b.addActionListener(this);
54: pnl.add(b);
55: b = new JButton("9");
56: b.addActionListener(this);
57: pnl.add(b);
58: b = new JButton("*");
59: b.addActionListener(this);
60: pnl.add(b);
61: b = new JButton("0");
62: b.addActionListener(this);
63: pnl.add(b);
64: b = new JButton(".");
65: b.addActionListener(this);
66: pnl.add(b);
67: b = new JButton("=");
68: b.addActionListener(this);
69: pnl.add(b);
70: b = new JButton("//");
71: b.addActionListener(this);
72: pnl.add(b);
73: jf.setSize(200, 300);
74: jf.setVisible(true);
75: }
76:
77: @Override
78: public void actionPerformed(ActionEvent e) {
79: System.out.println(e.getActionCommand());
80: // JTextField上显示的内容+当前按下的内容
81: // e.getActionCommand()返回此按钮激发的操作事件的命令名称。
82: // 如果命令名称为 null(默认),则此方法返回按钮的标签
83: tf.setText(tf.getText() + e.getActionCommand());
84: // *********在这里可以加入计算逻辑********
85:
86: }
87:
88: public static void main(String[] args) {
89: new Calculator().init();
90: }
91: }