Board logo

标题: Java 图形用户界面设计(2) [打印本页]

作者: look_w    时间: 2018-10-15 19:24     标题: Java 图形用户界面设计(2)

GUI 设计应用实例3.1 FlowLayout/GridLayout/BorderLayout 的应用实例3.1.1 应用背景
假设我们要编写一个简单的计算器 JApplet,其基本界面如下:
3.1.2 解决方法
通过其界面要求可知,我们可以通过将"BackSpace"和"Clear"JButton 放置在一个 JPanel(1)中,采用 FlowLayout 布局;将显示结果的 JTextField 和该 JPanel 一起放置到另外一个 JPanel(2),采用 GridLayout 布局;而将其它的 JButton 则放置在另外一个 JPanel(3)中,采用 GridLayout 布局;再将 JPanel(2)和 JPanel(3)加入该 JApplet,即可实现界面需求。具体实现方法如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/** 以 FlowLayout 布局 JPanel(1)*/
JPanel p1 = new JPanel(new FlowLayout()); // 默认组件从居中开始
// 加入"BackSpace"和"Clear"JButton
p1.add(backButton);
p1.add(clearButton);
/** 以 GridLayout 布局 JPanel(2)*/
JPanel p2 = new JPanel(new GridLayout(2, 1));   // 放置 2 行,每行 1 个组件
// 加入显示结果的 JTextField 和 JPanel(1)
p2.add(displayField);
p2.add(p1);
/** 以 GridLayout 布局 JPanel(3)*/
JPanel p3 = new JPanel(new GridLayout(4, 5));   // 放置 4 行,每行 5 个组件
String buttonStr = "789/A456*B123-C0.D+=";
for (int i = 0; i < buttonStr.length(); i++)
this.addButton(p3, buttonStr.substring(i, i + 1));
   
//addButton 方法
    private void addButton(Container c, String s)
   {
       JButton b = new JButton(s);
       if (s.equals("A"))
           b.setText("sqrt");
       else if (s.equals("B"))
           b.setText("1/x");
       else if (s.equals("C"))
           b.setText("%");
       else if (s.equals("D"))
           b.setText("+/-");
       b.setForeground(Color.blue);
       c.add(b);
       b.addActionListener(this);
   }
/** 以 BorderLayout 布局 JApplet*/
    this.setLayout(new BorderLayout());
this.add(p2, "North");
this.add(p3, "Center");




这样,就一切 OK 啦。具体的实现代码可参见附件中的 CalculateApplet.java 文件。
3.2 带工具栏和状态栏的 GridLayout/BorderLayout 应用实例3.2.1 实际问题
在很多情况下我们需要动态设置工具栏和状态栏,看下面的应用实例:
以上是在视图的工具栏和状态栏都被复选的时候,以下分别为某一个没选或都未选的情况。





欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0