GUI:图形用户界面
AWT:抽象窗口工具箱 的加强版为 Swing
Swing:轻量级和可插入外观特点
Swing组件最重要的父类为Container类,分为java.awt.Window和java.awt.Frame子类
Swing常见组件有:JButton、JFrame等,我们在接下来的创建窗体的操作中可以学到。
**讲在前头:Swing组件的窗体通常与组件和容器有关!**JFrame窗体是一个容器,它是Swing程序中各个组件的载体,可以将JFrame看作是承载这些组件的容器,同时可以为这些组件设置事件。
下面我们通过构建一个窗体的过程来学习这些组件:
JFrame jf=new JFrame(Title); Container container=jf.getContentPane();
首先创建JFrame的对象,接着调用JFrame的getContentPane()方法得到Container对象,将窗体转换为容器。这样我们就可以在容器中添加我们的组件或者设置布局管理器。可以理解容器是一个可以添加各种东西的空白的框,我们需要添加按钮和文字图片完成我们窗体的设计。
利用容器的add()方法就可以添加组件
JLabel jl=new JLabel("这是被张轲然承包的框框");
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
设想一个最基本的窗口,它具有哪些基本的元素,从刚开始窗口的出现:窗的大小,窗的背景颜色,窗的标题,这些显示的部分都可以利用Swing组件实现,作为开发人员的话一定要万事巨细,想到每个部分,想到每个部分用什么实现。这时候我们就可以明白窗体的设计为什么和组件和容器相关:组件实现窗体的各种功能,相当于零件,容器将这些组件实现的功能一个一个加进框内,相当于车架。
JDialog窗体为swing组件的对话框,它的功能是从一个窗体弹出到另一个窗体。
public JDialog(Frame f,String title,Boolean model):创建一个指定标题、窗体和模式的对话框。通过实例来看一下:
JButton bl=new JButton("安全弹出");
bl.setBounds(10, 10, 100, 21);
bl.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
new Duihua_Window(Tanchu_Duihua.this).setVisible(true);
}
});
container.add(bl);
首先在JFrame的容器里面定义一个按钮,然后为其添加鼠标监听事件,即:bl.addActionListener(new ActionListener()函数,接着使用new Duihua_Window(Tanchu_Duihua.this).setVisible(true);使得对话框窗体可见,这样就可以实现点击按钮弹出对话框的功能了。
class Duihua_Window extends JDialog {
public Duihua_Window(Tanchu_Duihua frame)
{
super(frame,"哈哈哈",true);
Container container=getContentPane();
JLabel jl=new JLabel("还是张轲然的框");
container.add(jl);
setBounds(120,120,100,100);
}
利用super关键字调用JDialog构造方法,构造方法里面,设置了自定义的JFrame窗体,对话框的标题和窗体类型。
JLabel类。只可以显示一行只读文本、一个图像、或带图像的文本,不能产生事件。
构造方法:
public JLabel(Icon icon,int aligment);创建一个带图标的JLabel对象,并设置对齐方式。
Swing中的图标可以放置在按钮、标签等组件上,用于描述组件的用途。
Swing通过Icon来接口来创建图标,则必须实现Icon的接口的三个方法:
得到图标的长宽,还有打印图标的方法。
public class DrawIcon implements Icon{
private int width;
private int height;
public int getIconWidth() {
return this.width;
}
public int getIconHeight() {
return this.height;
}
public DrawIcon(int width,int height) {
this.height=height;
this.width=width;
}
public void paintIcon(Component arg0,Graphics arg1,int x,int y) {
arg1.fillOval(x, y, width, height);
}
通过javax.swing.ImageIcon()类根据现有图片创建图标,ImageIcon实现了Icon接口。
java.net.URL url=MyImageIcon.class .getResource("1.jpg");
Icon icon=new ImageIcon(url);//通过上面的函数知道图片的地址,然后将地址为url的图片用作图标,前提是图片要和MyImageIcon类在一个文件夹。
jl.setIcon(icon);
总结
使用Swing组件的时候,重要的是将每个组件需要的设置的部分都设置好,如:对于图标,你需要创建一个新的类实现Icon图标接口,接着在类中我们要得到图标的长宽,位置,对齐方式,还有Icon必须要的方法。然后需要将这些完备的组件添加到容器中去中去,然后利用最基本的JFrame设置窗体的大小、显示还有关闭的方式,visible使得窗体可见,最后才可以显示。
绝对布局
硬性指定组件在容器中的位置和大小,可以用绝对坐标的方法指定组件的位置。
步骤: