Swing简介

对于目前阶段的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里面装一个插件,这里我就没有再写了,感兴趣的可以自己去百度。因为这里不是学习的重点,我就简要提一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值