努力刷题,每日三题,题目来源于《Java从入门到精通》----清华大学出版社。
我们先来看一个概念:
Java Swing 介绍:
Swing 是一个为Java设计的GUI工具包。
Swing是JAVA基础类的一部分。
Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。
Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行。
第一题(JFrame窗体)
JFrame窗体是一个容器,是Swing的各个组件的载体,它拥有“最大化”,“最小化”,“关闭”等按钮。
JFrame jf = new JFrame(title);
Container container = jf.getContentPane();
/*
jf是JFrame类的对象。
container是Container类的对象,可以使用JFrame对象调用getContentPane()方法获取。
Swing组件的窗体通常与组件和容器有关,在对象创建完成之后,使用getContentPane()来将窗体转换为容器,再加上设置布局管理器或者组件。
*/
比如:
container.add(new JButton("按钮"));//JButton按钮组件
删除的话,使用remove()来实现
container.remove(new JButton("按钮"));
栗子:
创建一个Example1类,该类继承JFrame类成为窗体类,再在该类里面创建标签组件,并添加到窗体界面中。
import javax.swing.*; //导入swing包
import java.awt.*; //导入awt包
public class Example1 extends JFrame {
//继承JFrame
public void CreateJFrame(String title){
//定义方法
JFrame jf = new JFrame(title);
Container container = jf.getContentPane(); //获取一个容器
JLabel jl = new JLabel("这是一个JFrame窗体"); //创建一个JLabel的标签
jl.setHorizontalAlignment(SwingConstants.CENTER); //使标签上的文字居中
container.add(jl); //将标签添加到容器中
container.setBackground(Color.white); //设置容器的背景
jf.setVisible(true); //窗体可视化
jf.setSize(200,150); //设置窗体的大小
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); //设置窗口的关闭方式
}
public static void main(String[] args){
new Example1().CreateJFrame("创建一个JFrame窗体");
}
}
JAVA窗体关闭方式:
EXIT_ON_CLOSE -> 退出程序默认窗口关闭
DO_NOTHING_ON_CLOSE -> 什么都不做就关闭窗口
DISPOSE_ON_CLOSE -> 任何注册监听程序对象会自动隐藏并释放窗体
HIDE_ON_CLOSE -> 隐藏窗口的默认窗口关闭
第二题(JDialog窗体)
JDialog窗体的功能是从一个窗体弹出另一个窗体,类似于弹出的对话窗,使用的时候,需要用getContentPane()方法将窗体转为为容器,然后再设置特性。
栗子:
在项目里面创建MyJDialog类,继承JDialog窗体,并在窗口添加按钮,当用户单击按钮后,弹出一个对话框窗体。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class MyJDialog extends JDialog {
// 创建新类继承JDialog类
private static final long serialVersionUID = 1L; //定义程序序列化ID
public MyJDialog(MyFrame frame) {
// 实例化一个JDialog类对象,指定对话框的父窗体、窗体标题和类型
super(frame, "第一个JDialog窗体", true);
Container container = getContentPane(); // 创建一个容器
container.add(new JLabel("这是一个对话框")); // 在容器中添加标签
setBounds(120, 120, 100, 100); // 设置对话框窗体大小
}
}
public class MyFrame extends JFrame {
// 创建新类
private static final long serialVersionUID = 1L;//定义程序序列化ID
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);
}
}
//JDialog类的构造方法:
public JDialog(): 创建一个没有标题和父窗体的对话框。
public JDialog(Frame f): 创建一个指定父窗体的对话框,但是此窗体没有标题。
public JDialog(Frame f,boolean model): 创建一个指定类型的对话框,指定父体,但是此窗体没有标题。
public JDialog(Frame f,String title): 创建一个指定标题和父窗体的对话框。
public JDialog(Frame f,String title,boolean model): 创建一个指定标题,窗体和模式的对话框。
第三题(图标的使用)
在Swing里面,使用Icon来创建图标,创建时就可以给定图标的大小,颜色等等。
Icon接口的三种方法:
public int getIconHeight() //图标的长
public int getIconWidth() //图标的宽
public void paintIcon(Component arg(),Graphics arg1,int arg2,int arg3) //指定坐标画图
栗子:
项目里面创建Icon接口的DrawIcon类,实现自定义的图标类。
import java.awt.*;
import javax.swing.*;
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);
}
}
JLabel 类常用构造方法
public JLabel() : 创建一个不带图标和文本的JLabel对象
public JLabel(Icon icon) : 创建一个带图标的JLabel对象
public JLabel(Icon icon,int aligment) : 创建一个带图标的JLabel对象,并设置图标的水平对齐方式。
public JLabel(String text,int aligment) : 创建一个带文本的JLabel对象,并设置文字水平对齐方式。
public JLabel(String text, Icon icon,int aligment) : 创建一个带文本,带图标的JLabel对象,并设置标签内容的水平对齐方式。
加油~