JAVA 制作简单计算机界面
用java程序实现上面的界面。
这个练习属于布局管理器的综合运用
其中组件有:窗体,面板,文本框,按钮。
首先用边界布局管理器(BorderLayout)把内容面板(container)分成上下两块(北区和中心区)
北区只需要放一个组件文本框(JTextField)即可。
中心区的组件不止一个,因此需要放一个中间层容器(面板1)JPanel.
按照布局特点用边界布局管理器把面板1分成上下两部分(北区和中心区),上下两部分都有多个组件(按钮),因此需要给面板1北区和中心区分别放一个面板(面板2,面板3)。
根据布局特点,面板2用流式布局管理器(FlowLayout)放入3个按钮,面板3用网格布局管理器(GridLayout)放入24个按钮(4行6列)。
package third;
import java.awt.*;
import javax.swing.*;
public class calcular {
JFrame frame; /* 顶级容器 框架 */
JPanel panel1, panel2, panel3; /* 面板1,2,3 */
JButton b[] = new JButton[27]; /* 按钮 27个 */
JTextField text; /* 文本框 */
定义了calcular类,成员变量是所有的组件。
calcular() {
frame = new JFrame("计算器");
frame.setSize(500, 500);
frame.setResizable(false);
frame.setLocation(250,300); /* public void setLocation(int x,int y) 将组件移到新位置。通过此组件父级坐标空间中的 x 和 y 参数来指定新位置的左上角。*/
Container container = frame.getContentPane(); /* 内容面板 */
BorderLayout m=new BorderLayout(2,2);
container.setLayout(m); /* 内容面板用边界管理器 */
JTextField text = new JTextField(10); /* 创建10列的文本框 */
container.add(text, BorderLayout.NORTH); /* 文本框放在内容面板的北区 */
JPanel panel1 = new JPanel();
panel1.setSize(300, 200);
BorderLayout n=new BorderLayout(2,2);
panel1.setLayout(n); /* 面板1用边界管理器 */
container.add(panel1, BorderLayout.CENTER); /* 面板1放在内容面板的中心区 */
JPanel panel2 = new JPanel();
panel2.setSize(200, 50);
FlowLayout p=new FlowLayout();
panel2.setLayout(p); /* 面板2用流式布局管理器 */
panel1.add(panel2, BorderLayout.NORTH);/* 面板2放在面板1的北区 */
b[0] = new JButton("Backspace"); /* 三个按钮的实例化 */
b[1] = new JButton("CE");
b[2] = new JButton("C");
panel2.add(b[0]); /* 三个按钮放在面板2内 */
panel2.add(b[1]);
panel2.add(b[2]);
JPanel panel3 = new JPanel();
panel3.setSize(200, 100);
GridLayout q=new GridLayout(4,6);
panel3.setLayout(q);/* 面板3用网格布局管理器 */
panel1.add(panel3); /* 面板3放在面板1的中心区 */
b[3] = new JButton("MC"); /* 24个按钮的实例化 */
b[4] = new JButton("7");
b[5] = new JButton("8");
b[6] = new JButton("9");
b[7] = new JButton("/");
b[8] = new JButton("sqrt");
b[9] = new JButton("MR");
b[10] = new JButton("4");
b[11] = new JButton("5");
b[12] = new JButton("6");
b[13] = new JButton("*");
b[14] = new JButton("%");
b[15] = new JButton("MS");
b[16] = new JButton("1");
b[17] = new JButton("2");
b[18] = new JButton("3");
b[19] = new JButton("-");
b[20] = new JButton("1/x");
b[21] = new JButton("M+");
b[22] = new JButton("0");
b[23] = new JButton("+/-");
b[24] = new JButton(".");
b[25] = new JButton("+");
b[26] = new JButton("=");
int i;
for (i = 3; i <= 26; i++) /* 23个按钮放在面板3内 */
panel3.add(b[i]);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
注:frame.setLoacation(x,y)将组件移到新位置
如果没有这个,程序就会报错。
主方法:
public static void main(String[] args) {
new calcular();
}
程序运行结果