对于目前阶段的Socket学习来说,后面我会写一个类似qq的应用来实现聊天功能。所以要进行Swing界面编程的简要介绍,首先Swing界面编程是没有普及开来的,因为太复杂了,但是这个demo我还是更愿意用Swing。
这里我就按照html的思路来介绍。
Java界面编程:
顶层容器Jframe jwindow jdialog.这三个容器就相当于html中的<html></html>
标签,也就是说所有可视化的东西都应该在这三个容器里面。
一般容器 jpanel 就是类似html中的div
还有一些其他的功能组件:
输入框:JTextField
密码框:JPasswordField
按钮:JButton
列表:JList
单选框:JRadioButton
复选框:JCheckBox
标签:JLabel
下拉框 :JComboBox
菜单:JMenu
菜单项:JMenuItem
除此以外还有布局,如果你学过Android,那你看这些东西可能很熟悉。
线性布局:FlowLayout
四边布局:BorderLayout
表格布局:GridLayout
绝对布局:null
下面就写一个聊天窗口界面来看一下,我已经将代码打上了详细的注释:
package socket.swing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
/**
* @author Hercules
* @version 创建时间:2020年5月28日 上午8:51:12
* 类说明
*/
public class Test {
public static void main(String[] args) {
//给出一个顶层容器,并设置窗口标题为聊天窗口
JFrame jFrame = new JFrame("聊天窗口");
//设置聊天窗口的大小
jFrame.setSize(300,400);
//设置聊天窗口在屏幕上居中显示
jFrame.setLocationRelativeTo(null);
//设置点击窗口的x自动退出程序,如果不写这一行代码,则只会界面消失,但是不会退出
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//给出一个一般容器JPanel
JPanel panel = new JPanel();
//将一般容器放入顶层容器
jFrame.add(panel);
//将一般容器的布局设置为四边布局
panel.setLayout(new BorderLayout());
//初始化一个文本输入区域,作为消息显示区域
JTextArea show = new JTextArea();
//给显示区域设置一下大小,因为四边布局宽是默认铺满的,所以只设置高260
show.setPreferredSize(new Dimension(0,260));
//再给显示区域设置一下边框,可以更好的区分,这里是实线边框
show.setBorder(BorderFactory.createLineBorder(Color.BLACK));
//而后显示区域应该是不可编辑的,这里设置不可编辑
show.setEditable(false);
//将文本输入区域添加到一般容器中,并设置其显示在容器的北方,也就是上方
//四边布局分东南西北,记住一个原则,上北下南左西右东
panel.add(show,BorderLayout.NORTH);
//初始化一个按钮
JButton send = new JButton("发送");
//在容器中加入按钮并且,设置按钮在布局的南边,也就是下面
panel.add(send,BorderLayout.SOUTH);
//再初始化一个文本输入区域作为输入区域
JTextArea textArea = new JTextArea();
//将这个文本输入区域放在四边布局的中央
panel.add(textArea,BorderLayout.CENTER);
//最后再显示一下这个顶层容器
jFrame.setVisible(true);
}
}
运行结果如下:
这里仅仅是把界面做出来了,但是具体的功能还没有实现,现在需要在下方输入框输入后可以在上方显示。
接下来在整个代码中加一个按钮绑定事件而后代码如下:
package socket.swing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
/**
* @author Hercules
* @version 创建时间:2020年5月28日 上午8:51:12
* 类说明
*/
public class Test {
public static void main(String[] args) {
//给出一个顶层容器,并设置窗口标题为聊天窗口
JFrame jFrame = new JFrame("聊天窗口");
//设置聊天窗口的大小
jFrame.setSize(300,400);
//设置聊天窗口在屏幕上居中显示
jFrame.setLocationRelativeTo(null);
//设置点击窗口的x自动退出程序,如果不写这一行代码,则只会界面消失,但是不会退出
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//给出一个一般容器JPanel
JPanel panel = new JPanel();
//将一般容器放入顶层容器
jFrame.add(panel);
//将一般容器的布局设置为四边布局
panel.setLayout(new BorderLayout());
//初始化一个文本输入区域,作为消息显示区域
JTextArea show = new JTextArea();
//给显示区域设置一下大小,因为四边布局宽是默认铺满的,所以只设置高260
show.setPreferredSize(new Dimension(0,260));
//再给显示区域设置一下边框,可以更好的区分,这里是实线边框
show.setBorder(BorderFactory.createLineBorder(Color.BLACK));
//而后显示区域应该是不可编辑的,这里设置不可编辑
show.setEditable(false);
//将文本输入区域添加到一般容器中,并设置其显示在容器的北方,也就是上方
//四边布局分东南西北,记住一个原则,上北下南左西右东
panel.add(show,BorderLayout.NORTH);
//初始化一个按钮
JButton send = new JButton("发送");
//在容器中加入按钮并且,设置按钮在布局的南边,也就是下面
panel.add(send,BorderLayout.SOUTH);
//再初始化一个文本输入区域作为输入区域
JTextArea textArea = new JTextArea();
//将这个文本输入区域放在四边布局的中央
panel.add(textArea,BorderLayout.CENTER);
//设置send按钮的事件
send.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
//获取输入框的内容
String text = textArea.getText();
//将输入框的内容显示到显示框中并且换行
show.append(text+"\n");
//清空输入框
textArea.setText("");
}
});
//最后再显示一下这个顶层容器
jFrame.setVisible(true);
}
}
运行过后结果如下:
这里就大体完成了。
其实这里也有快捷的拖动式Swing的快速开发,需要在你的IDE里面装一个插件,这里我就没有再写了,感兴趣的可以自己去百度。因为这里不是学习的重点,我就简要提一下。