在Java学习的过程中,我们时常会因为控制台程序的枯燥而失去了学习Java的乐趣,那么今天我们就开始学习Java的Swing。也就是GUI(Graphical user interface),在应用到GUI时,你就可以体会到编程的乐趣。

下面我就以我编写的一个程序结果为例,向大家阐述一下,在Java中如何建立窗口以及容器中组件的布局。程序运行结果如下:

Java swing技术介绍 swing学java_java

首先从图片本身开始分析:我们可以看到一个窗口,在窗口上面有这么五个按钮,然后五个按钮分部在这个窗体的边界。于是有了边界布局。从程序上面我们也是运用这样的逻辑实现的。创建窗口运用到java.awt.Frame类

代码如下:

//调用父类的一个构造方法,创建一个标题为“边界布局”的窗口
super("边界布局");
//设置窗口的大小,以像素为单位
this.setSize(200,300);
//设置窗口的起始位置(左上角坐标)
this.setLocation(100,100);
//设置窗口关闭时的默认操作
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

然后是创建按钮

//实例化面板对象   
  p = new JPanel();
//创建一个边界布局管理器对象,并把布局设置到面板中
  p.setLayout(new BorderLayout());
  b1 = new JButton("Button 东");
  b2 = new JButton("Button 西");
  b3 = new JButton("Button 南");
  b4 = new JButton("Button 北");
  b5 = new JButton("Button 中");

最后是将按钮加入到面板中,并设置布局方式

1 p.add(b1,BorderLayout.EAST);
2  p.add(b2,BorderLayout.WEST);
3  p.add(b3,BorderLayout.SOUTH);
4  p.add(b4,BorderLayout.NORTH);
5  p.add(b5,BorderLayout.CENTER);

其中包含的类是java.awt.BorderLayout;主要的代码就是这些。

完整的代码如下:

1 package com.example;
 2 import java.awt.BorderLayout;
 3 import javax.swing.*;
 4 
 5 
 6 public class BorderLayoutDemo extends JFrame{
 7     private JPanel p;
 8     private JButton b1,b2,b3,b4,b5;
 9     public BorderLayoutDemo(){
10         super("边界布局");
11         p = new JPanel();
12         //创建一个边界布局管理器对象,并把布局设置到面板中
13         p.setLayout(new BorderLayout());
14         b1 = new JButton("Button 东");
15         b2 = new JButton("Button 西");
16         b3 = new JButton("Button 南");
17         b4 = new JButton("Button 北");
18         b5 = new JButton("Button 中");
19 
20         p.add(b1,BorderLayout.EAST);
21         p.add(b2,BorderLayout.WEST);
22         p.add(b3,BorderLayout.SOUTH);
23         p.add(b4,BorderLayout.NORTH);
24         p.add(b5,BorderLayout.CENTER);
25 
26         this.add(p);
27         this.setSize(1000,1000);
28         this.setLocation(100,100);
29         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
30     }
31     public static void main(String[]args){
32         BorderLayoutDemo f = new BorderLayoutDemo();
33         f.setVisible(true);
34     }
35 }