- 浏览: 63517 次
- 性别:
文章分类
最新评论
-
waainli:
这个类是线程安全的。类内部会自动帮我们维护。
关于ConcurrentHashMap的一个问题 -
junlas:
50980487 写道你点右键看看源代码,
<objec ...
Bezier曲线制图工具 -
50980487:
你点右键看看源代码,
<object classid ...
Bezier曲线制图工具 -
junlas:
Mr.Star 写道图一,虽然策划很核心,但是前端才是主要的吧 ...
游戏 技术 设计讨论 -
Mr.Star:
图一,虽然策划很核心,但是前端才是主要的吧!前端需要和所有部门 ...
游戏 技术 设计讨论
java swing 已经基本上忘的差不多了,没事的时候开始练手了。希望走过路过的大虾不吝赐教,多多指点~~~谢先..
下面做的是一个一对一聊天的小程序:
第一步:设计视图;
package j2se.gui; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.Label; import java.awt.List; import java.awt.Panel; import java.awt.TextField; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MainFrame extends Frame { private List list; private Panel panel; private Panel ipPanel; private Panel dataPanel; private TextField txtIP; private TextField txtData; private WindowClosingDispose windowClosingDispose; private Label labelIP; private Label labelData; public MainFrame() { setData(); setShow(); setFrame(); setListener(); } private void setData() { list = new List(10); panel = new Panel(); ipPanel = new Panel(); dataPanel = new Panel(); labelIP = new Label("对方IP:"); labelData = new Label("您要说:"); txtIP = new TextField(20); txtIP.setText("127.0.0.1"); txtData = new TextField(50); } private void setShow() { this.add(list,BorderLayout.CENTER); this.add(panel,BorderLayout.SOUTH); panel.setLayout(new BorderLayout()); ipPanel.setLayout(new BorderLayout()); dataPanel.setLayout(new BorderLayout()); ipPanel.add(labelIP,BorderLayout.WEST); ipPanel.add(txtIP,BorderLayout.EAST); dataPanel.add(labelData,BorderLayout.WEST); dataPanel.add(txtData,BorderLayout.EAST); panel.add(ipPanel,BorderLayout.WEST); panel.add(dataPanel,BorderLayout.EAST); windowClosingDispose = this.new WindowClosingDispose(); } private void setFrame() { this.setBounds(200, 100, 700, 500); this.setTitle("Chat"); this.setVisible(true); } private void setListener() { this.addWindowListener(windowClosingDispose); } private class WindowClosingDispose extends WindowAdapter{ @Override public void windowClosing(WindowEvent arg0) { super.windowClosing(arg0); MainFrame.this.dispose(); System.exit(0); } } public List getList() { return list; } public TextField getTxtIP() { return txtIP; } public TextField getTxtData() { return txtData; } }
第二步:设计socket逻辑,本例中使用UDP协议:
package j2se.gui; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; public class MessageTransform { private MainFrame mainFrame; private DatagramSocket dsSender; private Thread receierThread; private DatagramSocket dsReceiver; private int PortReceiver = 3000; private int bufLengthReceiver = 1024; public MessageTransform(MainFrame mainFrame) { this.mainFrame = mainFrame; initData(); initSender(); initReceiver(); } private void initData() { try { dsSender = new DatagramSocket(); dsReceiver = new DatagramSocket(PortReceiver); } catch (SocketException e) { e.printStackTrace(); } } private void initSender() { mainFrame.getTxtData().addActionListener(this.new SenderAction()); } private void initReceiver() { receierThread = new Thread(this.new ReceiverAction()); receierThread.start(); } private class SenderAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { String sendData = mainFrame.getTxtData().getText(); if (sendData.isEmpty() || sendData.length() <= 0) { return; } mainFrame.getList().add("您说: "+sendData,0); byte[] buf = sendData.getBytes(); try { DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(mainFrame.getTxtIP().getText()), PortReceiver); dsSender.send(dp); } catch (UnknownHostException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } mainFrame.getTxtData().setText(""); } } private class ReceiverAction implements Runnable { @Override public void run() { byte[] buf = new byte[bufLengthReceiver]; DatagramPacket dp = new DatagramPacket(buf, bufLengthReceiver); while (true) { try { dsReceiver.receive(dp); mainFrame.getList().add(new String(buf,0,dp.getLength())+" from:" + dp.getAddress().getHostAddress()+":"+dp.getPort(), 0); } catch (IOException e) { e.printStackTrace(); } } } } }
第三部:程序入口:
package j2se.gui; public class Chat { private MainFrame mainFrame; private MessageTransform messageTransform; public Chat() { mainFrame = new MainFrame(); messageTransform = new MessageTransform(mainFrame); } public static void main(String[] args) { new Chat(); } }
- demo.rar (7.9 KB)
- 下载次数: 210
评论
6 楼
junlas
2010-12-02
qianhd 写道
玩具
哈哈,过奖了,要是我自己评价,就是连玩具都不如,玩具最起码还是有一定的利用价值~~~
5 楼
junlas
2010-12-02
sam_kee 写道
能在局域网通信吗?
可以~~
4 楼
sam_kee
2010-12-02
能在局域网通信吗?
3 楼
junlas
2010-11-30
zgzdzh 写道
把中文全部写在properties里用unicode编码保存。。。要不然到Linux下还是乱码。。
十分感谢,回头试试。。
2 楼
zgzdzh
2010-11-29
把中文全部写在properties里用unicode编码保存。。。要不然到Linux下还是乱码。。
1 楼
junlas
2010-11-29
上面的程序在有些机器上跑,显示出的是乱码,想知道应该怎么改??
发表评论
-
多线程开发,表示很凌乱
2012-04-05 17:15 764第一次做网络应用的一个项目的服务器端,以前一直都是ss ... -
关于ConcurrentHashMap的一个问题
2012-03-30 15:44 952比如我定义了一个私有成员: private Concu ... -
在游戏公司做的你们,是如何看待开发?
2011-01-12 23:24 1249呃~~~~ ,文章分类真不好选~@! 在游戏公司(无 ... -
练手java thread(五)
2010-12-19 02:50 1781通过Lock对象的lock()和unlock()方法来模拟sy ... -
练手java thread(四)
2010-12-19 02:18 1820用Executor来构建线程池,应该要做的事: 1).调用E ... -
练手java thread(三)
2010-12-19 00:58 1136Thread类的join方法测试: package thre ... -
练手java thread(二)
2010-12-18 22:30 1002生产者、消费者模型的demo: 1.程序入口: pa ... -
as3 GoogleEvent测试
2010-12-12 20:01 718RT ///------------------------ ... -
练手java thread(一)
2010-12-11 03:37 832生产者和消费者模型: package thread; ... -
练手java GUI(八)
2010-12-11 03:30 928最后一个小列子,说明swing与awt的一个小小的对比: ... -
练手java GUI(七)
2010-12-11 02:25 799一个CardLayout的例子: package gu ... -
练手java GUI(六)
2010-12-11 02:03 896多选框与单选框的例子: package gui.tes ... -
练手java GUI(五)
2010-12-10 00:07 822Dialog(模态和非模态两种,FileDialog不再举例) ... -
练手java GUI(四)
2010-12-08 00:25 831GUI菜单: package gui.test0 ... -
练手java GUI(三)
2010-12-07 23:30 960自定义组件(计时器): package gui. ... -
练手java GUI(二)
2010-12-05 22:15 819使用所谓双缓冲技术(只是听说过的)绘图: packag ... -
正则表达式的相关学习
2009-08-26 17:13 884注:对Pattern类的说明: ... -
ibatis的相关
2009-08-14 14:04 807ibatis的相关 代码例子 例子1:执行update(ins ...
相关推荐
使用java语言,开发一个模拟太阳系的GUI小项目。主要是对GUI部分的使用以及对于java项目如何打包的方式的实践。
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
"Java练手小项目"通常是指使用Java编程语言进行实践操作的小型应用程序,旨在帮助开发者提升技能、熟悉Java特性和编程流程。在这个特定的案例中,我们关注的是一个名为"简易通企业进销存管理系统"的项目。进销存管理...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
综上所述,Java GUI设计不仅仅涉及编程技巧,更是一项融合了心理学、人机交互学等多学科知识的综合性工作。通过遵循上述原则,设计师可以构建出既美观又实用的用户界面,从而提升用户体验,增强应用程序的竞争力。
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
在本项目"Java练手_电子时钟"中,我们主要关注的是如何使用Java编程语言来实现一个实时更新的数字时钟。这个练习涉及到多个Java技术领域,包括Java线程、AWT(Abstract Window Toolkit)绘图库以及Swing组件库。下面...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...
java课程设计大作业,java、算法练手项目,适合初学java、数据结构的同学拿来学习研究,基于java、GUI开发的小游戏,程序都经过测试,可以直接运行,资源含程序运行所需的源码、资源文件等全部数据,有需要的可放心...