java awt、swing 图形界面

AWT和Swing之间的区别:
    1)AWT 是基于本地方法的C/C++程序,其运行速度比较快;Swing是基于AWT的Java程序,其运行速度比较慢。
    2)AWT的控件在不同的平台可能表现不同,而Swing在所有平台表现一致。

AWT是Sun不推荐使用的工具集。
组件尽量使用Swing。

布局有很多种,比较了下,最好使用约束布局。(安卓最新的版本都是推荐使用约束布局)

这里弹性布局可以当成约束布局来使用。

package com.study;

import javax.swing.*;

/**
 * @Date: 2023/1/29 10:29
 */
public class Client {
    private static JButton sendBut;
    private static JTextField textInput;
    private static JTextArea textArea;

    public static void main(String[] args) {
        init();
    }


    private static void init() {
        // 创建窗口
        JFrame frame = new JFrame("客户端");   //父窗口
        frame.setResizable(true);   //设置此窗体是否可由用户调整大小,false不能,true能
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //点击窗口右上角关闭,直接关闭应用程序,相当于System.exit(0)
        frame.setSize(650, 400);    //设置父类窗体的 位置 大小
        frame.setLocationRelativeTo(null);  //居中

        // 创建内容面板,使用 弹性布局
        SpringLayout layout = new SpringLayout();
        JPanel container = new JPanel(layout);
        frame.setContentPane(container);

        // 创建组件
        textArea = new JTextArea(15, 50);//文本区域
        textArea.setLineWrap(true);//自动换行
        textArea.setEditable(false);//只读
        JScrollPane scrollPane = new JScrollPane(textArea);  //JScrollPane是带有滚动条的面板。

        // 创建组件
        sendBut = new JButton("发送");
        // 创建组件
        textInput = new JTextField(20);

        // 创建一个指定长度的 spring
        Spring st0 = Spring.constant(0);
        Spring st10 = Spring.constant(10);
        Spring st50 = Spring.constant(50);
        Spring _st10 = Spring.constant(-10);
        Spring _st30 = Spring.constant(-30);
        Spring _st50 = Spring.constant(-50);
        Spring _st60 = Spring.constant(-60);


        //NORTH(上) SOUTH(下) WEST(左) EAST(右)
        // 将组件c1的边缘e1链接到组件c2的边缘e2,边缘之间具有固定的距离。
        // void putConstraint(String e1, Component c1, int pad, String e2, Component c2)

        // 添加组件到内容面板
        container.add(scrollPane);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, scrollPane, st10, SpringLayout.NORTH, container);//上
        layout.putConstraint(SpringLayout.WEST, scrollPane, st10, SpringLayout.WEST, container);//左
        layout.putConstraint(SpringLayout.EAST, scrollPane, _st10, SpringLayout.EAST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, scrollPane, _st60, SpringLayout.SOUTH, container);//下

        // 添加组件到内容面板
        container.add(sendBut);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, sendBut, st10, SpringLayout.SOUTH, scrollPane);//上
        layout.putConstraint(SpringLayout.EAST, sendBut, _st10, SpringLayout.EAST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, sendBut, st50, SpringLayout.SOUTH, scrollPane);//下


        // 添加组件到内容面板
        container.add(textInput);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, textInput, st10, SpringLayout.SOUTH, scrollPane);//上
        layout.putConstraint(SpringLayout.WEST, textInput, st10, SpringLayout.WEST, container);//左
        layout.putConstraint(SpringLayout.EAST, textInput, _st10, SpringLayout.WEST, sendBut);//右
        layout.putConstraint(SpringLayout.SOUTH, textInput, st0, SpringLayout.SOUTH, sendBut);//下

        //设置监听事件
        myEvent();
        // 显示窗口
        frame.setVisible(true);

    }

    private static void myEvent() {
        //监听按钮事件
        sendBut.addActionListener(e -> {
            String text = textInput.getText();
            textArea.append(text + "\n");
            textInput.setText("");
        });
    }
}

package com.study;

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

/**
 * @Date: 2023/2/22 10:55
 */
public class Client {
    private static JButton inButton;
    private static JButton outButtonOne;
    private static JButton outButtonTwo;
    private static JTextField inText;
    private static JTextField outTextOne;
    private static JTextField outTextTwo;
    private static FileDialog fileDialog; // 文件对话框窗口,用户可以从中选择文件

    public static void main(String[] args) {
        init();
    }


    private static void init() {
        //在springboot中加入以下代码
        System.setProperty("java.awt.headless", "false");
        // 创建窗口
        JFrame frame = new JFrame("PDF工具");   //父窗口
        frame.setResizable(false);   //设置此窗体是否可由用户调整大小,false不能,true能
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   //点击窗口右上角关闭,直接关闭应用程序,相当于System.exit(0)
        frame.setSize(650, 250);    //设置父类窗体的 位置 大小
        frame.setLocationRelativeTo(null);  //居中

        // 创建内容面板,使用 弹性布局
        SpringLayout layout = new SpringLayout();
        JPanel container = new JPanel(layout);
        frame.setContentPane(container);

        //创建组件
        fileDialog = new FileDialog(frame, "文件选择", FileDialog.LOAD); //在父窗体上添加,文件对话框窗口

        // 创建组件
        inButton = new JButton("选择文件");
        outButtonOne = new JButton("直接转换");
        outButtonTwo = new JButton("重新生成");

        // 创建组件
        inText = new JTextField(20);
        outTextOne = new JTextField(20);
        outTextTwo = new JTextField(20);

        // 创建一个指定长度的 spring
        Spring st0 = Spring.constant(0);
        Spring st10 = Spring.constant(10);
        Spring st20 = Spring.constant(20);
        Spring st30 = Spring.constant(30);
        Spring st40 = Spring.constant(40);
        Spring st50 = Spring.constant(50);
        Spring st60 = Spring.constant(60);
        Spring _st10 = Spring.constant(-10);
        Spring _st30 = Spring.constant(-30);
        Spring _st50 = Spring.constant(-50);
        Spring _st60 = Spring.constant(-60);


        //NORTH(上) SOUTH(下) WEST(左) EAST(右)
        // 将组件c1的边缘e1链接到组件c2的边缘e2,边缘之间具有固定的距离。
        // void putConstraint(String e1, Component c1, int pad, String e2, Component c2)

        // 添加组件到内容面板
        container.add(inButton);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, inButton, st30, SpringLayout.NORTH, container);//上
        layout.putConstraint(SpringLayout.WEST, inButton, st10, SpringLayout.WEST, container);//左
        // layout.putConstraint(SpringLayout.EAST, inButton, _st10, SpringLayout.EAST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, inButton, st60, SpringLayout.NORTH, container);//下

        // 添加组件到内容面板
        container.add(inText);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, inText, st30, SpringLayout.NORTH, container);//上
        layout.putConstraint(SpringLayout.WEST, inText, st10, SpringLayout.EAST, inButton);//左
        layout.putConstraint(SpringLayout.EAST, inText, _st10, SpringLayout.EAST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, inText, st60, SpringLayout.NORTH, container);//下


        // 添加组件到内容面板
        container.add(outButtonOne);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, outButtonOne, st20, SpringLayout.SOUTH, inButton);//上
        layout.putConstraint(SpringLayout.WEST, outButtonOne, st10, SpringLayout.WEST, container);//左
        // layout.putConstraint(SpringLayout.EAST, outButtonOne, _st10, SpringLayout.WEST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, outButtonOne, st50, SpringLayout.SOUTH, inButton);//下

        // 添加组件到内容面板
        container.add(outTextOne);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, outTextOne, st20, SpringLayout.SOUTH, inButton);//上
        layout.putConstraint(SpringLayout.WEST, outTextOne, st10, SpringLayout.EAST, outButtonOne);//左
        layout.putConstraint(SpringLayout.EAST, outTextOne, _st10, SpringLayout.EAST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, outTextOne, st50, SpringLayout.SOUTH, inButton);//下


        // 添加组件到内容面板
        container.add(outButtonTwo);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, outButtonTwo, st20, SpringLayout.SOUTH, outButtonOne);//上
        layout.putConstraint(SpringLayout.WEST, outButtonTwo, st10, SpringLayout.WEST, container);//左
        // layout.putConstraint(SpringLayout.EAST, outButtonTwo, _st10, SpringLayout.WEST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, outButtonTwo, st50, SpringLayout.SOUTH, outButtonOne);//下

        // 添加组件到内容面板
        container.add(outTextTwo);
        // 约束组件的位置
        layout.putConstraint(SpringLayout.NORTH, outTextTwo, st20, SpringLayout.SOUTH, outButtonOne);//上
        layout.putConstraint(SpringLayout.WEST, outTextTwo, st10, SpringLayout.EAST, outButtonTwo);//左
        layout.putConstraint(SpringLayout.EAST, outTextTwo, _st10, SpringLayout.EAST, container);//右
        layout.putConstraint(SpringLayout.SOUTH, outTextTwo, st50, SpringLayout.SOUTH, outButtonOne);//下


        //设置监听事件
        myEvent();
        // 显示窗口
        frame.setVisible(true);

    }

    private static void myEvent() {
        //监听按钮事件
        inButton.addActionListener(e -> {
            fileDialog.setVisible(true);
            String dirPath = fileDialog.getDirectory();// 获取此文件对话框的目录
            String fileName = fileDialog.getFile();// 获取此文件对话框的选定文件
            if (dirPath == null || fileName == null) {
                return;
            }
            int index = fileName.lastIndexOf(".");
            String name = fileName.substring(0, index);
            String suffix = fileName.substring(index);//后缀
            inText.setText(dirPath + fileName);
            outTextOne.setText(dirPath + name + "-转换.pdf");
            outTextTwo.setText(dirPath + name + ".pdf");

        });
        //监听按钮事件
        outButtonOne.addActionListener(e -> {
            String text = outTextOne.getText();
            // JOptionPane.showMessageDialog(null, "成功","消息",JOptionPane.INFORMATION_MESSAGE);
            // JOptionPane.showMessageDialog(null, "错误","消息",JOptionPane.ERROR_MESSAGE);
            JOptionPane.showMessageDialog(null, "成功!");
        });
        //监听按钮事件
        outButtonTwo.addActionListener(e -> {
            String text = outTextTwo.getText();
            JOptionPane.showMessageDialog(null, "成功!");
        });


    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值