Java_Swing

王先生
2020-12-14 / 0 评论 / 4 阅读 / 正在检测是否收录...
package com.okk.hextostring;/*
 *             ┏┓     ┏┓ + +
 *           ┏━┛┻━━━━━┛┻━┓ + +
 *           ┃           ┃ + + +
 *           ┃      ━    ┃ + + + +
 *          ████━████    ┃ + + +
 *           ┃           ┃ + +
 *           ┃     ━┻    ┃ +
 *           ┃           ┃ +
 *           ┗━━┓     ┏━━┛ +
 *              ┃     ┃  + + + +
 *              ┃     ┃  + + + +  + + + +
 *              ┃     ┃  +  Code is far away from bug with the animal protecting
 *              ┃     ┃  +      神兽保佑,代码无bug
 *              ┃     ┃  +                    @author shy @date:2020-12-12 15:43
 *              ┃     ┃  + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 *              ┃     ┗━━━━━━━━━┓ +
 *              ┃               ┣━┓ +
 *              ┃               ┏━┛ + +
 *              ┗━┓ ┓ ┏━━┳ ┓ ┏━━┛ + +
 *                ┃ ┫ ┫  ┃ ┫ ┫  + +
 *                ┗━┻━┛  ┗━┻━┛  +
 */

import javax.swing.*;
import java.awt.*;

public class Main {
    /**
     * 创建并显示GUI。出于线程安全考虑,
     * 这个方法在事件调用线程中调用
     */
    public static void createAndShowGUI(){
        //确保一个漂亮的外观风格
        JFrame.setDefaultLookAndFeelDecorated(true);


        //创建及设置窗口
        JFrame jFrame = new JFrame("test");
        jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Setting the width and height of frame
        jFrame.setSize(350, 200);
        /*
         * 总结:
         * 1、单独使用setSize()时,是按照设置的大小显示的;此时不能使用pack(),否则按照pack()自动适配
         * 2、单独使用pack()时,是按照组件的大小自动适配的
         * 3、单独使用setPreferredSize()时,设置的大小无效,必须在后面添加pack()配合显示
         *
         * pack() 调整此窗口的大小,以适合其子组件的首选大小和布局
         * 就算JFrame用setSize来设定框体大小,用了pack()一样会改变成刚好能包含全部组件的框体。
         *
         * 当使用setPreferredSize()时需要配合pack()显示,否则setPreferredSize()的设置效果不生效
         *
         *
         */


//        this.setSize(800, 600);

        /*
         * 总结:
         * 1、单独使用setSize()时,是按照设置的大小显示的;此时不能使用pack(),否则按照pack()自动适配
         * 2、单独使用pack()时,是按照组件的大小自动适配的
         * 3、单独使用setPreferredSize()时,设置的大小无效,必须在后面添加pack()配合显示
         *
         * pack() 调整此窗口的大小,以适合其子组件的首选大小和布局
         * 就算JFrame用setSize来设定框体大小,用了pack()一样会改变成刚好能包含全部组件的框体。
         *
         * 当使用setPreferredSize()时需要配合pack()显示,否则setPreferredSize()的设置效果不生效
         *
         *
         */

        jFrame.setPreferredSize(new Dimension(800, 600));


//        //添加helloworld标签
//        JLabel label = new JLabel("HD");
//        jFrame.getContentPane().add(label);


        /* 创建面板,这个类似于 HTML 的 div 标签
         * 我们可以创建多个面板并在 JFrame 中指定位置
         * 面板中我们可以添加文本字段,按钮及其他组件。
         */
        JPanel panel = new JPanel();
        // 添加面板
        jFrame.add(panel);
        /*
         * 调用用户定义的方法并添加组件到面板
         */
        placeComponents(panel);


        /**
         * JFrame.pack()
         * pack() 调整此窗口的大小,以适合其子组件的首选大小和布局
         * 单独使用setSize()时,不能使用pack(),否则按照pack()自动适配
         *
         * 单独使用pack()时,是按照组件的大小自动适配的
         *
         * 单独使用setPreferredSize()时,设置的大小无效,必须在后面添加pack()配合显示,否则设置效果不生效
         */
        jFrame.pack();

        //显示窗口
        jFrame.setVisible(true);
    }
    private static void placeComponents(JPanel panel) {

        /* 布局部分我们这边不多做介绍
         * 这边设置布局为 null
         */
        panel.setLayout(null);

        // 创建 JLabel
        JLabel userLabel = new JLabel("User:");
        /* 这个方法定义了组件的位置。
         * setBounds(x, y, width, height)
         * x 和 y 指定左上角的新位置,由 width 和 height 指定新的大小。
         */
        userLabel.setBounds(10,20,80,25);
        panel.add(userLabel);

        /*
         * 创建文本域用于用户输入
         */
        JTextField userText = new JTextField(20);
        userText.setBounds(100,20,165,25);
        panel.add(userText);

        // 输入密码的文本域
        JLabel passwordLabel = new JLabel("Password:");
        passwordLabel.setBounds(10,50,80,25);
        panel.add(passwordLabel);

        /*
         *这个类似用于输入的文本域
         * 但是输入的信息会以点号代替,用于包含密码的安全性
         */
        JPasswordField passwordText = new JPasswordField(20);
        passwordText.setBounds(100,50,165,25);
        panel.add(passwordText);

        // 创建登录按钮
        JButton loginButton = new JButton("login");
        loginButton.setBounds(10, 80, 80, 25);
        panel.add(loginButton);
    }

    public static void main(String[] args) {
        //显示GUi
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

评论 (0)

取消