文档章节

GUI的使用总结

李茂冉
 李茂冉
发布于 2016/05/20 00:48
字数 487
阅读 6
收藏 0

用这个自制的项目来总结j2se的学习包括GUI的使用


import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;

public class SpeakFrame extends Frame{
	
	public SpeakFrame(String name){
		super(name);
	}
	
	private TextArea txt;
	private TextField message;
	private Thread t;
	private TextField ip;
	
	public static void main(String[]args){
		
		//程序的入口点
		SpeakFrame f= new SpeakFrame("聊天工具");
		f.runFrame();
		f.serverRun();
	}
	//服务端开始
	public void serverRun(){
		Server s=new Server();
		t=new Thread(s);
		t.start();
	}
	
	public void runFrame(){
		
		//关闭窗口的事
		addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				//终止线程
				t.interrupt();				
				System.exit(0);
			}
		});
		//设置窗体的大小
		super.setBounds(300,300,400,600);
		//窗体的布局
	//	super.setLayout(new FlowLayout());
		super.setLayout(null);
		//窗体的颜色
		super.setBackground(Color.yellow);
		//让窗口的大小不能改变
		super.setResizable(true);		
		//实例化一个文本框
		txt=new TextArea();
		//设置文本框的字体大小
		txt.setFont(new Font("",24,24));
		//设置文本框的大小
		txt.setBounds(15,40,370,350);
		//设置为只读属性
		txt.setEditable(false);
		txt.setBackground(Color.white);
		
		//实例化一个按钮
		Button btnClear=new Button("清空");
		//设置按钮的大小
		btnClear.setBounds(15,400,100,40);
		//添加按钮的单击事件
		btnClear.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				//清空文本框
				txt.setText("");
			}
		});
		Label l=new Label("对方IP地址:");
		l.setBounds(130,400,100,40);
		l.setFont(new Font("",20,20));
		add(l);
		ip=new TextField(100);
		ip.setBounds(240,405,120,26);
		ip.setFont(new Font("",20,20));
		add(ip);
		
		Sender sender=new Sender();
		//发送信息的文本框
		message=new TextField(400);
		message.setFont(new Font("",20,20));
		message.setBounds(15,450,370,100);
		message.addActionListener(sender);
		//发送信息的按钮
		Button btnOK = new Button("发送");
		btnOK.setBounds(200,560,100,30);
		btnOK.addActionListener(sender);
	//	添加控件
		add(txt);
		add(btnClear);
		add(message);
		add(btnOK);
		setVisible(true);
	}
	class Sender implements ActionListener{
		public void actionPerformed(ActionEvent e){

			//发送信息!
			try{
				Socket s=new Socket(ip.getText(),7777);
				String str="\n"+s.getInetAddress()+"\n"+message.getText();
				message.setText("");
				DataOutputStream dos=new DataOutputStream(s.getOutputStream());
				dos.writeUTF(str);
				addMessage(str);
				dos.close();
				s.close();
			}catch(IOException ex){
				javax.swing.JOptionPane.showMessageDialog(null,"服务端没有开启,或对方IP输入有误,请仔细检查IP是否正确!","发送信息失败!",0);	
			}
		}	
	}
	class Server implements Runnable{
		//服务端
		public void run(){
			ServerSocket server;
			try{
				server=new ServerSocket(7777);
				while(true){
					Socket s=server.accept();
					DataInputStream dis=new DataInputStream(s.getInputStream());
					String str= dis.readUTF();
					dis.close();
					s.close();
					addMessage(str);
				}
			}catch(IOException ex){
				javax.swing.JOptionPane.showMessageDialog(null,"出错了!服务端不能运行\n"+ex.getMessage(),"提示",0);	
			}
		}	
	}
	//添加信息的方法,并确定线程的同步
	public synchronized void addMessage(String str){
		txt.setText(txt.getText()+str);	
	}
}

© 著作权归作者所有

共有 人打赏支持
上一篇: Tomcat的配置
下一篇: Java数据类型
李茂冉
粉丝 6
博文 103
码字总数 59256
作品 0
东城
高级程序员
私信 提问
APPK反编译 dex文件查看源码

00x01 工具准备 Android逆向助手_v2.2 jd-gui apk 7z-zip 00x02 详细步骤 a. 从应用宝官网下载apk,这里我下载了借贷宝; b. 使用 7z-zip提取客户端apk文件,也可先把客户端apk文件后缀名改为...

Ho0oH
2017/09/14
0
0
vim打开文件时显示行号

vim打开文件是,默认不提示行号。 至于显示行号的用途,因人而异 linux下一个主机可能有N个账户。对于配置分为两种:仅配置当前账户,配置所有账户 vim配置文件路径(Centos 5.5 final ): ...

Airship
2015/12/29
34
0
学习总结-《父与子的编程之旅》chapter 6

通过运用EasyGui,简单的了解一下什么是GUI(图形用户界面),并进行简单的使用练习。 6.1什么是GUI GUI是Graphical User Interface的缩写,其中包括键入文本和返回文本,可以看到窗口、按钮...

csdn_elsa
2018/05/23
0
0
android反编译

总结 apktool 反编译过后可以获得资源信息 dex2jar 和 jd-gui一起使用可以获得源码信息,主要是使用dex2jar获得jar文件。 然后通过jd-gui查看jar文件获得源码 dex2jar 下载地址: http://pan...

西米小娅
2015/10/11
81
0
Mac上用docker搭建Neo私链并调试

用虚拟机搭建私链的问题 上一篇Neo私链中使用四台阿里云的windows搭建了私链,看到了网络建立的过程,但这样子有很多问题。 阿里云跑了一天花了100块,费钱。 手动搭建,下次又要重来。 我用...

NEO-FANS
01/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Android Messenger进程间客户端向服务端传递数据

Messenger:客户端向服务端传递数据 1.Service: public class MessengerService extends Service { private Messenger messenger = new Messenger(new Handler() { public void handleMess......

Coding缘
3分钟前
0
0
Pod在多可用区worker节点上的高可用部署

一、 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可用...

zhaowei121
21分钟前
0
0
oracle XTTS介绍

一、什么是XTTS 首先什么是XTTS。XTTS其实是从TTS来的,TTS其实也是传输数据的一种手段,传输数据的时候可能用过EXP的方式,再往后可能用数据泵导入导出一些数据,或者去做备份然后再恢复。其...

突突突酱
22分钟前
0
0
[缺陷分析]半同步下多从库复制异常

引 言 本文是由爱可生研发团队出品的「图解MySQL」系列文章,不定期更新,但篇篇精品。 爱可生开源社区持续运营维护的小目标: 每周至少推送一篇高质量技术文章 每月研发团队发布开源组件新版...

爱可生
22分钟前
0
0
二维数组序号重置

public static function unique_arr($array2D,$stkeep=false,$ndformat=true){ // 判断是否保留一级数组键 (一级数组键可以为非数字) if($stkeep) $stArr = array_keys($array2D); // 判断是......

dragon_tech
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部