常用窗体
JFrame窗体
JFrame窗体是一个容器,是Swing程序中各个组件载体,也就是日常所见的对话框。在开发应用程序是可通过继承java.swing.JFrame类来创建窗体,在这个窗体中增加组件,同时为组件设置时间。
JFrame窗体类是具有“最大化”、“最小化”、“关闭”等基础按钮的对话框。
JFrame在程序中的语法格式:
JFrame jf = new JFrame(title); //实例化一个JFrame对象
Container container = jf.getContentPane(); //获取一个容器
jf:JFrame类的对象。
container:Container类的对象,可以使用JFrame对象调用getContentPane()方法来获取。
Swing组件的窗体通常与组件和容器有关,所以在Jrame对象创建完成后,需要调用getContentPane()方法将窗体转换为容器,然后在容器中添加组件或设置布局管理器。
通常来说,容器用来包含和显示组件,如果需要增加组件至容器中,可以使用来自Container类的add()方法进行设置:
container.add(new JButton("按钮")); //添加JButton按钮组件至容器中
或是使用remove()方法将其删除:
container.remove(new JButton("按钮")); //从容器中删除JButton按钮组件
示例:
/*
* @author jiacy
* @date 2020-2-10
* @version V1.0
* @创建Example1类,继承JFrame类为窗体类,在该类中创建标签组件,并添加到窗体组件中
*/
import java.awt.Color;
import java.awt.Container; //导入awt包
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;//导入swing包
public class Example1 extends JFrame{ //定义一个类继承JFrame类
public void CreateJFrame(String title) { //定义一个CreateJFrame()方法
JFrame jf = new JFrame(title); //实例化一个JFrame对象
JLabel jl = new JLabel("这是一个JFrame窗体"); //创建一个JLabel标签
Container container = jf.getContentPane(); //获取一个容器
jl.setHorizontalAlignment(SwingConstants.CENTER); //标签文字居中
container.add(jl); //将标签添加至容器中
jf.setVisible(true); //使窗体可视
container.setBackground(Color.white); //设置容器背景颜色为白色
jf.setSize(200,150); //设置窗体大小为200*150
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//设置窗体关闭方式
}
public static void main(String[] args) { //在主方法中调用CreateJFrame()方法
new Example1().CreateJFrame("创建一个JFrame窗体");
}
}
运行结果:
对比程序与运算结果,可以看出:
采用了CreateJFrame(String title)构造方法,可以在实例化该JFrame对象(程序中的Example1对象)时创建一个不可见但是有标题的窗体(标题为“这是一个JFrame窗体”,在程序18-19行);
使用setVisible(true)方法设置窗体可见;
使用setSize(int x , int y)方法设置窗体大小,其中x和y分别代表了窗体的宽和高(对应程序25行)。
创建窗体后,需要增加窗体关闭方式,调用setDefaultCloseOperation()方法关闭窗体,这里采用了EXIT_ON_CLOSE(程序26行),代表退出应用程序默认窗口关闭,即通过右上角的“关闭”按钮。
JDialog窗体
JDialog也是对话框,它和JFrame的区别在于JDialog是从一个窗体中弹出另一个窗体,就好比从页面中点击按钮弹出一个对话框。JDialog和JFrame窗体形式基本相同,编码形式也很相似。
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
class MyJDialog extends JDialog{ //创建新类继承JDialog类
public MyJDialog(MyFrame frame) {
//实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
super(frame,"第一个JDialog窗体",true);
Container container = getContentPane(); //创建一个容器
container.add(new JLabel("这是一个对话框")); //在容易中增加标签
setBounds(120,120,100,100); //设置对话框大小
}
public static class MyFrame extends JFrame{ //创建新类
public static void main(String args[]) {
new MyFrame(); //实例化MyJDialog类对象
}
public MyFrame() {
Container container = getContentPane(); //创建一个容器
container.setLayout(null);
JLabel jl = new JLabel("这是一个JFrame窗体");
jl.setHorizontalAlignment(SwingConstants.CENTER);
container.add(jl);
JButton bl = new JButton("弹出对话框"); //定义一个按钮
bl.setBounds(10, 10, 100, 21);
bl.addActionListener(new ActionListener(){ // 为按钮添加鼠标单击事件
public void actionPerformed(ActionEvent e){
//使MyJDialog窗体可见
new MyJDialog(MyFrame.this).setVisible(true);
}
});
container.add(bl); //添加按钮和组件
container.add(bl);
container.setBackground(Color.white);
setSize(200, 200); //设置窗体大小
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); //设置窗体关闭方式
setVisible(true); //设置弹出窗体可见
}
}
}
运行结果:
标签与图标
标签
标签由JLabel类定义,其父类为JComponent类。
标签可以显示一行只读文本、一个图像或带图像的文本,并不能产生任何类型时间,只能简单显示文本和图片,但可以使用标签的特性指定标签上文本的对齐方式。
public JLabel(String text,Icon icon,int aligment)//创建一个带文本、带图标的JLabel对象,并设置标签内容的水平对齐方式
图标
Swing中的图标可通过Icon接口来创建,可以再创建时给定图标大小、颜色等特性。
使用Icon接口时,须实现其中3个方法:
public int getIconHeight():获取图标的长;
public int getIconWidth():获取图标的宽;
public void painIcon(Component arg0,Graphics arg1,int arg2,int arg3):在指定坐标位置画图。
import java.awt.Component;
import java.awt.Container;
import java.awt.Graphics;
import javax.swing.Icon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.WindowConstants;
public class DrawIcon implements Icon{ //实现Icon接口
private int width; //声明图标的长
private int height; //声明图标的宽
public int getIconHeight() { //实现getIconHeight()方法
return this.height;
}
public int getIconWidth() { //实现getIconWidth()方法
return this.width;
}
public DrawIcon(int width,int height) { //定义构造方法
this.width = width;
this.height = height;
}
//实现paintIcon()方法
public void paintIcon(Component arg0,Graphics arg1,int x ,int y) {
arg1.fillOval(x, y, width, height); //绘制一个圆形图标
}
public static void main(String[] args) {
DrawIcon icon = new DrawIcon(15,15);
//创建一个标签,并设置标签上文字在正中央
JLabel j = new JLabel("测试",icon,SwingConstants.CENTER);
JFrame jf = new JFrame(); //创建一个JFrame窗口
Container c = jf.getContentPane();
c.add(j);
jf.setSize(100,100);
jf.setVisible(true);
jf.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
}
实现结果:
在实现paintIcon()方法中使用Graphics类中的方法绘制一个圆形图标,其余实现的方法为返回图标的长和宽。
除了自己绘制图标外,还可以使用某个特定图片创建,利用javax.swing.ImageIcon类根据现有突变创建图标,可支持多种图片格式。只要在程序中增加获取图片所在的URL即可。
URL url = MyImageIcon.class.getResource("imageButton.jpg")
☆java.lang.Class类中的getResource()方法可以获取资源文件的URL路径。