以下是四个使用 Swing 组件创建的示例代码:
示例一:JFrame
JFrame 是一个顶级容器,用于创建框架窗口。下面是一个简单的 JFrame 示例:
import javax.swing.JFrame;
/**
* @author: Ajie
* @create: 2023/6/21
* @Description:
* @FileName: MyDialog
* @History:
* @自定义内容:
*/
public class MyFrame extends JFrame {
public MyFrame() { // 构造函数
setTitle("My JFrame"); // 设置 JFrame 的标题
setSize(400, 400); // 设置 JFrame 的大小
setLocationRelativeTo(null); // 将 JFrame 相对于屏幕居中显示
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置 JFrame 的关闭操作
setVisible(true); // 显示 JFrame
}
public static void main(String[] args) { // 主函数
new MyFrame(); // 创建一个 MyFrame 对象
}
}
这个示例中,我们创建了一个 MyFrame 类继承了 JFrame,并在构造函数中设置了框架的标题,大小,居中位置和关闭操作。最后创建了一个 MyFrame 实例来启动应用程序。
示例图:
示例二:JPanel
JPanel 是一个常规容器,用于组织 Swing 组件、划分布局等操作。下面是一个简单的 JPanel 示例:
import javax.swing.*;
import java.awt.*;
/**
* @author: Ajie
* @create: 2023/6/21
* @Description:
* @FileName: MyDialog
* @History:
* @自定义内容:
*/
public class MyPanel extends JPanel {
public MyPanel() { // 构造函数
// 在 MyPanel 中添加两个 JButton
add(new JButton("Button 1"));
add(new JButton("Button 2"));
}
public static void main(String[] args) { // 主函数
JFrame frame = new JFrame(); // 创建 JFrame 对象
frame.setTitle("My JPanel"); // 设置 JFrame 的标题
frame.setSize(400, 400); // 设置 JFrame 的大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置 JFrame 的关闭操作
frame.setLocationRelativeTo(null); // 将 JFrame 居中显示
MyPanel panel = new MyPanel(); // 创建 MyPanel 对象
frame.add(panel); // 将 MyPanel 对象添加进 JFrame
frame.setVisible(true); // 显示 JFrame
}
}
这个示例中,我们首先创建了一个 MyPanel 类继承了 JPanel,在构造函数中添加了两个按钮(JButton)。然后在 main 方法中创建了一个 JFrame 实例,并把 MyPanel 实例添加到 JFrame 中。
示例图:
示例三:JDialog
JDialog 是一个顶级容器,用于创建对话框窗口。下面是一个简单的 JDialog 示例:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author: Ajie
* @create: 2023/6/21
* @Description:
* @FileName: MyDialog
* @History:
* @自定义内容:
*/
public class MyDialog extends JDialog implements ActionListener {
private JLabel label; // 创建一个 JLabel 对象
public MyDialog(JFrame parent) { // 构造函数,接受一个 JFrame 对象作为参数
// 调用 JDialog 的构造函数,设置标题、模态、布局、位置等属性
super(parent, "My JDialog", true);
setLayout(new FlowLayout()); // 设置 JDialog 的布局为 FlowLayout
label = new JLabel("This is a JDialog."); // 创建一个 JLabel,并设置文本内容
add(label); // 将 JLabel 添加进 JDialog
JButton okButton = new JButton("OK"); // 创建一个 JButton 对象
okButton.setActionCommand("OK"); // 设置 JButton 的 actionCommand 属性为 "OK"
okButton.addActionListener(this); // 为 JButton 添加 ActionListener
add(okButton); // 将 JButton 添加进 JDialog
setDefaultCloseOperation(DISPOSE_ON_CLOSE); // 设置 JDialog 的关闭操作为 DISPOSE_ON_CLOSE
setLocationRelativeTo(null); // 将 JDialog 相对于父窗口居中显示
pack(); // 调整 JDialog 的大小,以适应其中包含的组件
setVisible(true); // 显示 JDialog
}
public void actionPerformed(ActionEvent e) { // ActionListener 接口的方法
dispose(); // 关闭 JDialog
}
public static void main(String[] args) { // 主函数
JFrame frame = new JFrame(); // 创建 JFrame 对象
frame.setTitle("My JDialog"); // 设置 JFrame 的标题
frame.setSize(400, 400); // 设置 JFrame 的大小
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 设置 JFrame 的关闭操作
frame.setLocationRelativeTo(null); // 将 JFrame 居中显示
JButton button = new JButton("Show JDialog"); // 创建一个 JButton 对象
button.addActionListener(new ActionListener() { // 为 JButton 添加 ActionListener
public void actionPerformed(ActionEvent e) {
JDialog dialog = new MyDialog(frame); // 创建一个 MyDialog 对象
}
});
frame.add(button); // 将 JButton 添加进 JFrame
frame.setVisible(true); // 显示 JFrame
}
}
这个示例中,我们首先创建了一个 MyDialog 类继承了 JDialog,传入了一个 JFrame 实例(parent)作为参数。在构造函数中创建了一个包含一个标签和一个确定按钮的 JDialog。确定按钮被创建为 ActionCommand 为“OK”的 JDialog,然后添加 ActionListener 来监听按钮的点击事件。最后创建了一个 MyDialog 实例,并将其显示在 JFrame 中。
示例图:
以上三个示例展示了 JFrame、JPanel 和 JDialog 组件的基本用法,它们被广泛用于 Swing 应用程序中。当然,Swing 还有其他的组件和容器,可以根据自己的需求选择使用。
示例四:实战:编写一个可以生成密码加密的程序
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* @author: Ajie
* @create: 2023/6/21
* @Description:
* @FileName: PasswordEncrypter
* @History:
* @自定义内容:
*/
public class PasswordEncrypter extends JFrame {
private JTextField passwordField; // 密码输入文本框
private JTextArea resultArea; // 输出文本区域
public PasswordEncrypter() {
// 调用JFrame构造函数,设置窗口标题
super("密码加密程序");
// 创建文本框和标签
JLabel passwordLabel = new JLabel("请输入密码:");
// 修改输入标签的字体
Font font2 = new Font("微软雅黑", Font.PLAIN, 30); //设置字体及大小
passwordLabel.setFont(font2);
passwordField = new JTextField(20); // 创建密码输入文本框
// 修改输入框的大小和字体
Font font = new Font("微软雅黑", Font.PLAIN, 25); //设置字体及大小
passwordField.setPreferredSize(new Dimension(1400, 100));
passwordField.setFont(font);
// 创建按钮
JButton encryptButton = new JButton("加密");
Font font3 = new Font("微软雅黑", Font.PLAIN, 40); //设置字体及大小
encryptButton.setFont(font3);
encryptButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 获取输入密码并进行加密
String password = passwordField.getText();
String encrypted = encrypt(password);
// 在文本框中显示输出结果
resultArea.setText(encrypted);
}
});
// 创建文本区域
resultArea = new JTextArea(5, 20);
resultArea.setLineWrap(true); // 启用自动换行
resultArea.setWrapStyleWord(true);
// 修改输入框的大小和字体
Font font1 = new Font("微软雅黑", Font.PLAIN, 25); //设置字体及大小
resultArea.setPreferredSize(new Dimension(1400, 500));
resultArea.setFont(font1);
// 使用 GridBagLayout 布局,设置组件大小和位置
JPanel panel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(10, 10, 10, 10);
c.gridx = 0;
c.gridy = 0;
c.weightx = 0;
panel.add(passwordLabel, c);
c.gridx = 1;
c.gridy = 0;
c.weightx = 1.0;
c.fill = GridBagConstraints.HORIZONTAL;
panel.add(passwordField, c);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 2;
c.weighty = 1.0;
c.fill = GridBagConstraints.BOTH;
panel.add(resultArea, c);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 2;
c.weighty = 0;
c.fill = GridBagConstraints.NONE;
panel.add(encryptButton, c);
// 设置整体窗口大小为1500*900
setPreferredSize(new Dimension(1500, 900));
// 最大化显示
// setExtendedState(JFrame.MAXIMIZED_BOTH);
// 把面板添加到窗口中
setContentPane(panel);
pack();
setLocationRelativeTo(null); // 让窗口显示在屏幕中间
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
// 加密函数,这里只是简单地把密码加上了一个后缀
private String encrypt(String password) {
// 在这里编写加密代码
return password+"加密完成";
}
public static void main(String[] args) {
new PasswordEncrypter();
}
}
示例图:
这个程序使用 JFrame 创建了一个窗口,并添加了一个密码输入框、一个文本标签、一个按钮和一个文本区域。当用户在密码框中输入密码并单击按钮时,程序会模拟加密该密码,然后在文本区域中显示输出结果。
在 JFrame 的构造函数中,我们使用 GridBagLayout 布局管理器来设置输入框、标签、按钮和文本区域的位置和大小。在添加这些组件之后,我们添加了一个组件监听器,以便在窗口大小发生变化时更新组件大小。在 componentResized 方法中,我们获取了窗口的大小,并设置了输入框和输出区域的大小。
在这个程序中,我们还提供了一个模拟加密方法,以便在用户单击按钮时对密码进行加密。此外,在组件监听器中,我们使用 setPreferredSize 方法来更新输入框和输出区域的大小,并在每次更新后重新打包窗
将程序打成jar包本地运行操作
敬请期待!