J2SE Swing: 计算器小应用

设计思想:

设计一个计算器界面,应用Swing 需要联合两个布局管理器,首先将16个按钮放在一个"使用了GridLayout布局的"Panel上,
然后将这个Panel和文本框放在使用BorderLayout布局管理的主框架窗口中

1

 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:  }

你可能感兴趣的:(swing)