
正文
java对话框代码文本 java聊天对话框
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
急需一个java编程实现的简单聊天窗口代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class ClientDemo01 {
public static void main(String[] args){
JFrame f=new JFrame("AA");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextArea ta=new JTextArea(15,30);
ta.setEditable(false); //文本域只读
JScrollPane sp=new JScrollPane(ta); //滚动窗格
JTextField tf=new JTextField(20);
JButton b=new JButton("发送");
p1.add(sp);
p2.add(tf);
p2.add(b);
f.add(p1,"Center");
f.add(p2,"South");
f.setBounds(300,300,360,300);
f.setVisible(true);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Socket socket=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
socket=new Socket("192.168.0.4",5000);
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream());
MyThread01 mt=new MyThread01(bis,ta);
mt.start();
}catch(Exception e){
e.printStackTrace();
}
b.addActionListener(new ButtonActionListener01(tf,ta,bos));
}
}
class ButtonActionListener01 implements ActionListener{
JTextField tf;
JTextArea ta;
BufferedOutputStream bos;
public ButtonActionListener01(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this.bos=bos;
}
public void actionPerformed(ActionEvent e){
String message=tf.getText();
if(!message.equals("")){
tf.setText(""); //清空文本框
ta.append("AA:"+message+"\n"); //添加到文本域并换行
try{
bos.write(message.getBytes());
bos.flush();
}catch(Exception ex){
System.out.println("发送失败");
}
}
}
}
class MyThread01 extends Thread{
BufferedInputStream bis;
JTextArea ta;
public MyThread01(BufferedInputStream bis,JTextArea ta){
this.bis=bis;
this.ta=ta;
}
public void run(){
try{
while(true){
byte[] b=new byte[100];
int length=bis.read(b);
String message=new String(b,0,length);
ta.append("BB:"+message+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
} import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.*;
import java.io.*;
public class ServerDemo01{
public static void main(String[] args){
JFrame f=new JFrame("BB");
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextArea ta=new JTextArea(12,30); //文本域,第一个参数为行数,第二个参数为列数
ta.setEditable(false); //文本域只读
JScrollPane sp=new JScrollPane(ta); //滚动窗格
JTextField tf=new JTextField(20);
JButton b=new JButton("发送");
p1.add(sp);
p2.add(tf);
p2.add(b);
f.add(p1,"Center");
f.add(p2,"South");
f.setBounds(300,300,360,300);
f.setVisible(true);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ServerSocket server=null;
Socket socket=null;
BufferedInputStream bis=null;
BufferedOutputStream bos=null;
try{
server=new ServerSocket(5000);
//ta.append("等待AA连接...\n");
socket=server.accept();
//ta.append("AA已连接\n");
bis=new BufferedInputStream(socket.getInputStream());
bos=new BufferedOutputStream(socket.getOutputStream());
MyThread1 mt=new MyThread1(bis,ta);
mt.start();
}catch(Exception e){
e.printStackTrace();
}
b.addActionListener(new ButtonActionListener1(tf,ta,bos));
}
}
class ButtonActionListener1 implements ActionListener{
JTextField tf;
JTextArea ta;
BufferedOutputStream bos;
public ButtonActionListener1(JTextField tf,JTextArea ta,BufferedOutputStream bos){
this.tf=tf;
this.ta=ta;
this.bos=bos;
}
public void actionPerformed(ActionEvent e){
String message=tf.getText(); //获取文本框中的内容
if(!message.equals("")){
tf.setText(""); //清空文本框
ta.append("BB:"+message+"\n"); //添加到文本域并换行
try{
bos.write(message.getBytes());
bos.flush();
}catch(Exception ex){
System.out.println("发送失败!");
}
}
}
}
class MyThread1 extends Thread{
BufferedInputStream bis;
JTextArea ta;
public MyThread1(BufferedInputStream bis,JTextArea ta){
this.bis=bis;
this.ta=ta;
}
public void run(){
try{
while(true){
byte[] b=new byte[100];
int length=bis.read(b);
String message=new String(b,0,length);
ta.append("AA:"+message+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
相关问答
Q1: java怎么创建消息对话框
复杂的对话消息框可以参考JDialog
说明: JDialog的写法和JFrame基本类似. 可以自由添加组件等,代码量偏多.
简单的消息对话框可以使用JOptionPane
说明: 功能较少, 可拓展性不强,但是代码非常简洁. 适合大多数的应用场景.
效果图
举例:
public class Demo {
public static void main(String[] args) {
JOptionPane.showMessageDialog(null, "提示:今天天气不错哟~");
JOptionPane.showMessageDialog(null, "提示: 6/0出错, 被除数不能为0! ", "警告",JOptionPane.ERROR_MESSAGE);
}
}
关于触发的举例
效果图
参考代码
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//该窗口继承自JFrame.
public class DemoFrame extends JFrame implements ActionListener{
JTextField jtf;
JButton jb;
public DemoFrame() {
jtf = new JTextField(8);
jtf.setText("Hello ~");
jb = new JButton("显示文本框的内容");
jb.addActionListener(this);
JPanel jp = new JPanel();
jp.add(jtf);
jp.add(jb);
add(jp);
setTitle("窗口");// 窗口标题
setSize(380, 185);// 窗口大小
setLocationRelativeTo(null);// 窗口居中
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 通常添加这行代码,点击窗口右下角的关闭时会结束程序
setVisible(true);
}
// main方法
public static void main(String[] args) {
new DemoFrame();
}
@Override
public void actionPerformed(ActionEvent e) {
JButton jb1 = (JButton) e.getSource();
if(jb==jb1) {
JOptionPane.showMessageDialog(null, "文本框的内容是:"+jtf.getText());
}
}
}
拓展:
更多的关于JDialog和JOptionPane两个组件的使用方法, 可以查看java API文档
建议经常查看java的 API文档, 网上有很多的中文版. 不熟悉的类和方法,就看看, 是学习的利器~
Q2: 如何设置JAVA中对话框的文字字体,颜色
关于设置对话框的背景颜色,和设置控件的字体颜色或背景颜色:
首先要为对话框添加消息映射,主要是:
BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)
ON_WM_ERASEBKGND()//背景色
ON_WM_CTLCOLOR()//设置文本等控件相关颜色
END_MESSAGE_MAP()
然后在相关代码区域添加代码:
//背景色
BOOL CXXXDlg::OnEraseBkgnd(CDC* pDC)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
//背景色
BOOL retValue= CDialog::OnEraseBkgnd(pDC);
CRect rc;
GetClientRect(rc);
pDC-FillSolidRect(rc,RGB(230,240,250));
return retValue;
}
// 除按纽之外的其他控件,字体颜色、字体背景颜色、控件背景颜色等。
HBRUSH CXXXDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CBkDialog::OnCtlColor(pDC, pWnd, nCtlColor);
// TODO: 在此更改DC 的任何属性
//对除了按钮外的其他控件有效
if(pWnd-GetDlgCtrlID() == IDC_STATIC_TEXT )//关联控件ID
{
//设置字体颜色
pDC-SetTextColor(RGB(200,100,80));
//设置文本背景颜色
pDC-SetBkColor(RGB(230,240,250));
//设置控件背景颜色
hbr = ::CreateSolidBrush(RGB(230,240,250));
return hbr;
}
// TODO: 如果默认的不是所需画笔,则返回另一个画笔
return hbr;
}
关于java对话框代码文本和java聊天对话框的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







