聊天框java代码 java简单的聊天窗口代码( 六 )


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();
}
}
}
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();

推荐阅读