以下是四个使用 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 中添加两个 JButtonadd(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 对象添加进 JFrameframe.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 的布局为 FlowLayoutlabel = new JLabel("This is a JDialog."); // 创建一个 JLabel,并设置文本内容add(label); // 将 JLabel 添加进 JDialogJButton okButton = new JButton("OK"); // 创建一个 JButton 对象okButton.setActionCommand("OK"); // 设置 JButton 的 actionCommand 属性为 "OK"okButton.addActionListener(this); // 为 JButton 添加 ActionListeneradd(okButton); // 将 JButton 添加进 JDialogsetDefaultCloseOperation(DISPOSE_ON_CLOSE); // 设置 JDialog 的关闭操作为 DISPOSE_ON_CLOSEsetLocationRelativeTo(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 添加 ActionListenerpublic void actionPerformed(ActionEvent e) {JDialog dialog = new MyDialog(frame); // 创建一个 MyDialog 对象}});frame.add(button); // 将 JButton 添加进 JFrameframe.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*900setPreferredSize(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包本地运行操作
敬请期待!