
定义一个全局变量用来创建和循环JTextField的值,该变量为JTextField的个数,创建和获取皆可使用for来 *** 作如:
1
2
3
4
for (int i = 0; i < txtNumber; i++) {
String title = "Txt " + i;
paneadd(title, new JTextField(title));
}
话说网上真的好多啊
package client;
import javaawtColor;
import javaawtContainer;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventWindowAdapter;
import javaawteventWindowEvent;
import javaioDataInputStream;
import javaioDataOutputStream;
import javaioIOException;
import javanetSocket;
import javautilDate;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJOptionPane;
import javaxswingJScrollPane;
import javaxswingJTextArea;
import javaxswingJTextField;
public class ClientFrame extends JFrame{
private JTextArea allmsg;
private JTextField welcome,copyright,chatmsg;
private JButton send;
private JScrollPane js;
private boolean isConnected = true;
public DataOutputStream out;
public DataInputStream in;
public Socket s = null;
String nic; / -- 保存用户昵称 --/
/
初始化客户端资源
1获取从LoginFrame传递过来的参数
2初始化界面元素
3初始化通信所需要的资源 EG:输入/输出流(DataInputStream/DataOutputStream)
/
public ClientFrame(String name,Socket socket)
{
thissetSize(310,660);
thissetLocation(290,50);
thissetTitle("聊天室客户端<"+name+">");/ -- 指定窗口的标题 --/
thiss = socket;/ -- 接收从LoginFrame中传递过来的Socket --/
thisnic = name+" 说: ";
welcome = new JTextField(" < "+name+" >欢迎您来到聊天室 ",100);
welcomesetBackground(Colorblue);
welcomesetEnabled(false);
copyright = new JTextField(" ----- all copyright @ TOP-king -----");
copyrightsetEnabled(false);
allmsg = new JTextArea();
allmsgsetEditable(false);
allmsgappend(" 系统消息: 欢迎登录在线聊天室 \n");
js = new JScrollPane(allmsg);//为JTextArea添加滚动条
chatmsg = new JTextField("在此输入聊天信息");
chatmsgaddActionListener(new listen());
send = new JButton("发送");
sendaddActionListener(new listen());/ -- 添加事件监听器 --/
try {
out = new DataOutputStream(sgetOutputStream());
in = new DataInputStream(sgetInputStream());
} catch (IOException e) {JOptionPaneshowMessageDialog(null, "系统异常","错误",JOptionPaneOK_CANCEL_OPTION);}
addcomponettocontainer();
/ -- 当用户关闭窗口时进行相关的处理 eg:Socket Data(Input/Output)Stream 的关闭--/
thisaddWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we)
{
sendmsg("quit&logout");/ -- 向服务器端发送关闭信息 --/
isConnected = false;
destory();/ -- 销毁窗口资源 --/
}
});
new Thread(new linread())start();/ -- 启动读取信息线程 --/
}
public void addcomponettocontainer()
{
Container c = thisgetContentPane();
csetLayout(null);
welcomesetBounds(75,10,150,20);
jssetBounds(10,50,280,500);
chatmsgsetBounds(10,560,180,30);
sendsetBounds(220,560,70,30);
copyrightsetBounds(10,600,280,20);
cadd(welcome);
cadd(js);
cadd(chatmsg);
cadd(send);
cadd(copyright);
thissetVisible(true);
thissetResizable(false);
}
class listen implements ActionListener
{
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(egetSource()==send||egetSource()==chatmsg)
{
String msg = chatmsggetText()trim();
if(""equals(msg))
{
JOptionPaneshowMessageDialog(null,"发送信息不能为空!","错误",JOptionPaneOK_OPTION);
}
else
{sendmsg((new Date())toLocaleString()+"\n"+nic+msg+"\n");chatmsgsetText("");}
}
}
}
/ -- 向服务器端发送信息 --/
public void sendmsg(String m)
{
if(isConnected)//如果socket的输出流没关闭
{
try {
outwriteUTF(m);
} catch (IOException e) {
JOptionPaneshowMessageDialog(null,"发送信息失败!(系统异常)","错误",JOptionPaneOK_OPTION);
}
}
else
{
JOptionPaneshowMessageDialog(null,"发送信息失败!(服务器关闭/网络故障)","错误",JOptionPaneOK_OPTION);
}
}
/ -- 读取信息线程 --/
class linread implements Runnable
{
public void run()
{
read();
}
public void read()
{
while(isConnected)
{
try {
String msg = inreadUTF();
if("SYSTEM_CLOSED"equals(msg))
{
JOptionPaneshowMessageDialog(null,"读取消息失败(服务器关闭/网络故障)!","错误",JOptionPaneOK_OPTION);
isConnected = false;
}
else
allmsgappend(msg+"\n");
} catch (IOException e) {
}
}//end while
JOptionPaneshowMessageDialog(null,"读取消息失败(服务器关闭/网络故障)!","错误",JOptionPaneOK_OPTION);
}//end read()
}
public void destory()
{
try {
thisoutclose();
thisinclose();
thissclose();
} catch (IOException e) {
}
thisdispose();
}
}
======================================================
package client;
import javaawt;
import javaxswing;
import javaawtevent;
import javaio;
import javanet;
public class LoginFrame extends JFrame{
private JTextField name;
private JTextField ip;
private JButton ok,cancle;
public Socket socket;
public LoginFrame()
{
super("登录框");
thissetSize(400,80);
thissetLocation(100,100);
name = new JTextField("昵称");
ip = new JTextField("127001");
ok = new JButton("登录");
cancle = new JButton("取消");
okaddActionListener(new listenEvent());
cancleaddActionListener(new listenEvent());
//建立容器
addcomponettocontainer();
thissetDefaultCloseOperation(EXIT_ON_CLOSE);
}
/
建立容器及控件
/
public void addcomponettocontainer()
{
Container c = thisgetContentPane();
csetLayout(null);
namesetBounds(10,10,100,30);
ipsetBounds(120,10,100,30);
oksetBounds(230,10,70,30);
canclesetBounds(310,10,70,30);
cadd(name);
cadd(ip);
cadd(ok);
cadd(cancle);
thissetVisible(true);
thissetResizable(false);
}
public class listenEvent implements ActionListener
{
public void actionPerformed(ActionEvent event) {
// TODO Auto-generated method stub
if(eventgetSource()==ok)
{
String n = namegetText()trim();
String i = ipgetText()trim();
if(""equals(n)||""equals(i))
{
JOptionPaneshowMessageDialog(null,"昵称、IP不能够为空!","错误",JOptionPaneOK_OPTION);
}
else{login(n,i);}
}
if(eventgetSource()==cancle)
{
namesetText("");
ipsetText("");
}
}
}
/
进行登录
@param name
@param ip
/
public void login(String name,String ip)
{
try {
socket = new Socket(ip,7777);
DataOutputStream out = new DataOutputStream(socketgetOutputStream());
outwriteUTF(name);
outflush();//强制输出缓存中的内容
//outclose();
new ClientFrame(name,socket);
destroywindow();
} catch (UnknownHostException e) {
JOptionPaneshowMessageDialog(null,"找不到主机地址(IP错误/网络故障)!","错误",JOptionPaneOK_OPTION);
} catch (IOException e) {
}
}
public void destroywindow()
{
thisdispose();
}
public static void main(String[] args)
{
new LoginFrame();
}
}
==================================================
package server;
import javaawtContainer;
import javaawteventActionEvent;
import javaawteventActionListener;
import javaawteventWindowAdapter;
import javaawteventWindowEvent;
import javaioDataInputStream;
import javaioDataOutputStream;
import javaioIOException;
import javanetServerSocket;
import javanetSocket;
import javautilArrayList;
import javautilDate;
import javaxswingJButton;
import javaxswingJFrame;
import javaxswingJOptionPane;
import javaxswingJScrollPane;
import javaxswingJTextArea;
import javaxswingJTextField;
public class ServerFrame extends JFrame{
/
/
private static final long serialVersionUID = 1L;
private JTextArea allmsg;
private JTextField currnum,totalnum,copyright,chatmsg;
private JButton send;
private JScrollPane js;
int num1,num2,port;/ -- num1:当前在线人数 num2:总上线人数 port:服务端口号 --/
private ServerSocket ss;
ArrayList<user> lists;//存放所有在线用户
public ServerFrame()
{
super("聊天室服务器端");
thissetSize(310,660);
thissetLocation(200,50);
lists = new ArrayList<user>();
num1 = num2 =0;
port = 7777;
currnum = new JTextField(" 当前在线人数: "+num1);
currnumsetEnabled(false);
totalnum = new JTextField(" 上线总人数: "+num2);
totalnumsetEnabled(false);
copyright = new JTextField(" ----- all copyright @ TOP-king -----");
copyrightsetEnabled(false);
allmsg = new JTextArea();
allmsgappend(" --------------- 系统消息 --------------\n");
allmsgsetEditable(false);
allmsgsetLineWrap(true); //允许自动换行
js = new JScrollPane(allmsg);//为JTextArea添加滚动条
chatmsg = new JTextField("在此输入系统信息");
chatmsgaddActionListener(new ActionListener(){
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent arg0) {
String str = chatmsggetText()trim();
if(!""equals(str))
{sendmsg((new Date())toLocaleString()+" -- 系统消息: "+str);chatmsgsetText("");}
else
JOptionPaneshowMessageDialog(null, "消息不能为空","错误",JOptionPaneOK_OPTION);
chatmsgsetText("");/ -- 发送信息后,将输入栏中的信息清空 -- /
}
});
send = new JButton("发送");
sendaddActionListener(new ActionListener(){
@SuppressWarnings("deprecation")
public void actionPerformed(ActionEvent arg0) {
String str = chatmsggetText()trim();
if(!""equals(str))
{sendmsg((new Date())toLocaleString()+" -- 系统消息: "+str);chatmsgsetText("");}
else
JOptionPaneshowMessageDialog(null, "消息不能为空","错误",JOptionPaneOK_OPTION);
chatmsgsetText("");/ -- 发送信息后,将输入栏中的信息清空 -- /
}
});
//建立容器
addcomponettocontainer();
thisaddWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we)
{
sendmsg("SYSTEM_CLOSED");/ -- 向客户端发送服务器关闭信息 -- /
destory();
}
});
start(); / -- 启动连接服务 -- /
}
public void addcomponettocontainer()
{
//Container建立容器
Container c = thisgetContentPane();
csetLayout(null);
currnumsetBounds(20,15,130,20);
totalnumsetBounds(155,15,125,20);
jssetBounds(10,50,280,500);
chatmsgsetBounds(10,560,180,30);
sendsetBounds(220,560,70,30);
copyrightsetBounds(10,600,280,20);
cadd(currnum);
cadd(totalnum);
cadd(js);
cadd(chatmsg);
cadd(send);
cadd(copyright);
thissetVisible(true);
thissetResizable(false);
}
/
start()方法监听客户的连接
并且保存客户端的相关信息EG:用户昵称、用户所使用的Socket
用户连接到服务器成功之后,将其保存到用户列表中,并为该用户启动一个线程用于通信 /
@SuppressWarnings("deprecation")
public void start()
{
boolean isStarted = false;/ -- 用于标记服务器是否已经正常启动 -- /
try {
thisss = new ServerSocket(port);
isStarted = true;
thisallmsgappend((new Date())toLocaleString()+" 服务器启动 @ 端口: "+port+"\n");
while(isStarted)
{
Socket client = thisssaccept(); / -- 监听客户端的连接 -- /
DataInputStream in = new DataInputStream(clientgetInputStream());
String name = inreadUTF();
user u = new user();
uname = name;
usocket = client;
listsadd(u); //将该用户加到列表中去
num1++;
num2++;
currnumsetText(" 当前在线人数: "+num1);
totalnumsetText(" 上线总人数: "+num2);
thisallmsgappend((new Date())toLocaleString()+" : "+uname+" 登录 \n");
new Thread(new ClientThread(u))start();/ -- 为该用户启动一个通信线程 -- /
}
} catch (IOException e) {
Systemoutprintln("服务器已经启动");
Systemexit(0);
}
}
/
通信线程主要功能包括:
1监听客户端输入的信息
2将接收到的信息转发给其他用户 /
class ClientThread implements Runnable
{
user user = null;
boolean isConnected = true;
DataInputStream dis = null;
DataOutputStream dos = null;
public ClientThread(user u)
{
thisuser = u;
try {
thisdis = new DataInputStream(thisusersocketgetInputStream());
thisdos = new DataOutputStream(thisusersocketgetOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
public void run()
{
readmsg();
}
/ -- 读取客户的聊天信息 -- /
@SuppressWarnings("deprecation")
public void readmsg()
{
while(isConnected)
{
try {
String msg = disreadUTF();
if("quit&logout"equals(msg))//当用户关闭客户端窗口时,发送quit字符串 表示用户已经退出
{
num1--;
try{
thisdisclose();
thisdosclose();
thisusersocketclose();
thisisConnected = false;
}catch(IOException ioe)
{
ioeprintStackTrace();
}finally{
thisisConnected = false;
if(dis!=null) thisdisclose();
if(dos!=null) thisdosclose();
if(thisusersocket!=null) thisusersocketclose();
}
listsremove(thisuser);//从列表中删除该用户
currnumsetText(" 当前在线人数: "+num1);
allmsgappend((new Date())toLocaleString()+" : "+thisusername+" 退出\n");
}
else
sendmsg(msg);
} catch (IOException e) {
eprintStackTrace();
}
}
}
}
/ -- 将信息进行转发 -- /
public void sendmsg(String msg)
{
user us = new user();
DataOutputStream os = null;
if(listssize()>0)
{
for(int i=0;i<listssize();i++)
{
us = listsget(i);
try {
os = new DataOutputStream(ussocketgetOutputStream());
oswriteUTF(msg);
} catch (IOException e) {
eprintStackTrace();
}
}
}
else
JOptionPaneshowMessageDialog(null, "当前无用户在线。发送消息失败","失败",JOptionPaneOK_OPTION);
}
public void destory()
{
try {
thisssclose();
} catch (IOException e) {
eprintStackTrace();
}
thisdispose();
}
public static void main(String[] args)
{
new ServerFrame();
}
}
=================================================
package server;
import javanet;
public class user {
String name;
Socket socket;
}
Eclipse中第一种:步骤:
eclipsewindows设定javabuild pathclasspath变量新建
名称:JRE_SRC
file:jdk/srczip这样就ok了第二种:
1,你把鼠标放在一个jkd的类上按下F3,如果这时迁移到一个class文件拿去的话
2,class文件画面会有一个“关联源代码”按钮,点击这个按钮,然后从系统文件选择jdk下的srczip文件
这样就ok了,以后你就可以直接看到源码了。
工欲善其事,必先利其器。
JDK查看源码可首先从ArrayList、Vector、LinkedList 源码比较开始看起。
================================================================
关于myeclipse及eclipse中JDK、struts2、Spring、Hibernate源码查看
说实话,平时项目紧,很少有时间去研究源码,最近的项目暂时需求不明确,就先看看源码。
在MyEclipse中开发,习惯于点击类名,按Ctrl键查看源码
一般,我们导入的只有jar文件,所以看不到对于的java文件,如果需要看源码,必须下载对应开源包的源码,一般都是zip文件,比如Spring,下载spring-framework-208-with-dependencieszip后解压,在spring-framework-208\dist下我们会发现它的源码包spring-srczip
选中项目中的任何一个Spring的jar包,右键点击,选择properties,打开了Java Source Attribute,点击External File,选择我们刚才看到的spring-srczip,确定,OK,可以查看源码了。
至于Hibernate/Struts,一样的导入方法,如果找不到srczip文件,可以直接把下载的zip选择过去。
对于JDK,一般我们安装目录下就有源码,比如我的安装目录下:C:\Program Files\Java\jdk150_07,就可以看到srczip这个文件,这就是JDK的源码包。一样添加,OK。
我使用JDOM技术访问并修改XML文件的例子:
XML文件(e:\data\dbconfigurexml):
<xml version="10" encoding="UTF-8">
<CONFIGUREDATA>
<CONFIGURE TYPE="SQL Server 2005">
<DRIVER>commicrosoftsqlserverjdbcSQLServerDriver</DRIVER>
<URL>jdbc:sqlserver://localhost:1433;DatabaseName=DBName</URL>
<USERID>sa</USERID>
<PASSWORD>123</PASSWORD>
</CONFIGURE>
</CONFIGUREDATA>
Java程序(Testjava):
import javaioFile;
import javaioFileOutputStream;
import orgjdomDocument;
import orgjdomElement;
import orgjdominputSAXBuilder;
import orgjdomoutputFormat;
import orgjdomoutputXMLOutputter;
public class Test{
public static void main(String[] args){
try{
String filepath = "E:\\data\\dbconfigurexml";
File file = new File(filepath);
SAXBuilder builder = new SAXBuilder();
Document document = (Document) builderbuild(file);
Element root = documentgetRootElement();
Element elem1 = rootgetChild("CONFIGURE");
//修改密码
elem1getChild("PASSWORD")setText("123456");
//写回XML文件
Format format=FormatgetRawFormat();
formatsetEncoding("UTF-8");
XMLOutputter output=new XMLOutputter(format);
outputoutput(document, new FileOutputStream(filepath));
}
catch(Exception e){
eprintStackTrace();
}
}
}
需要JDOM包再找我。
以上就是关于怎么使用获取swing的控件里面的所有得值全部的内容,包括:怎么使用获取swing的控件里面的所有得值、请问能不能帮我写一个Java的聊天窗口文件源代码,不要很复杂,只要能运行,聊天就行了!我用淘宝金币换,谢、如何查看JDK源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)