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();
}
});
}
}
版权属于:
王先生
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)