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, "成功!");
});
}
}