努力刷题,每日三题,题目来源于《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中swing要学吗 swing还是javafx_Swing

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);
    }
}

java中swing要学吗 swing还是javafx_java_02

//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);
    }
}

java中swing要学吗 swing还是javafx_Java_03

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对象,并设置标签内容的水平对齐方式。

加油~