java 中两个服务器交互_怎么让java两个类之间进行交互

展开全部

HI我..

通过构造方法就可以把那个引用传过去了。。62616964757a686964616fe59b9ee7ad9431333262363735

如果你是在一个窗口干什么后打开另一个窗口的。。就是说你在一个窗口中打开另一个窗口的。。

TextFrame 类 这里面有个文本框和一个按钮。。点击按钮就打开另一个窗口。。

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class TextFrame extends JFrame {

public JTextField jt;

/**

* @param args

*/

public TextFrame() {

JLabel jl = new JLabel("文本框:");

this.jt = new JTextField(15);

JButton jb = new JButton("点击");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

new ButtonFrame(TextFrame.this);

}

});

JPanel jp = new JPanel();

jp.add(jl);

jp.add(jt);

jp.add(jb);

this.add(jp);

this.setBounds(100, 100, 100, 100);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public static void main(String[] args) {

new TextFrame();

}

}

ButtonFrame 类。。这里面有个按钮。点击就可以设置这边这个文本框的内容了。。

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class ButtonFrame extends JFrame {

private TextFrame jf;

public ButtonFrame(TextFrame frame) {

this.jf = frame;

JButton jb = new JButton("点击设置");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

String str = JOptionPane.showInputDialog("请输入", null);

ButtonFrame.this.jf.jt.setText(str);

}

});

JPanel jp = new JPanel();

jp.add(jb);

this.add(jp);

this.setBounds(250, 250, 100, 100);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

如果两个类都是单独运行的。。没有任何关系的话(即不是在一个窗口中点击上面东西或是干什么就打开另一个窗口)。。都是独立运行的。。

那就需要用到socket了哦。。

下面两个类你都单独运行就是了哈。。

服务器端:SocketManager类。这里面有个文本框。。

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.ServerSocket;

import java.net.Socket;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JTextField;

public class SocketManager extends JFrame {

/**

* @param args

* @throws IOException

*/

private JTextField jt;

public static void main(String[] args) {

SocketManager manager = new SocketManager();

manager.doListen();

}

public SocketManager() {

JLabel jl = new JLabel("文本框:");

this.jt = new JTextField(15);

JPanel jp = new JPanel();

jp.add(jl);

jp.add(jt);

this.add(jp);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public void doListen() {

ServerSocket server;

try {

server = new ServerSocket(9991);

while (true) {

Socket client = server.accept();

new Thread(new SSocket(client)).start();

}

} catch (IOException e) {

e.printStackTrace();

}

}

// 服务器进程

class SSocket implements Runnable {

Socket client;

public SSocket(Socket client) {

this.client = client;

}

public void run() {

DataInputStream input;

while (true) {

try {

input = new DataInputStream(client.getInputStream());

try {

String listMsg = input.readUTF();

SocketManager.this.jt.setText(listMsg);

} catch(Exception e) {

break;

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

客户端:Client类 有个按钮。。点击弹出输入框输入内容。。服务器的文本框就显示你输入的内容

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.DataOutputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.Socket;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class Client extends JFrame {

private static Socket socket;

OutputStream netOut;

DataOutputStream doc;

public Client() {

try {

socket = new Socket("127.0.0.1", 9991);

this.netOut = socket.getOutputStream();

this.doc = new DataOutputStream(netOut);

} catch(Exception e) {

e.printStackTrace();

}

JButton jb = new JButton("点击设置");

jb.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

String str = JOptionPane.showInputDialog("请输入", null);

try {

doc.writeUTF(str);

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

JPanel jp = new JPanel();

jp.add(jb);

this.add(jp);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

public static void main(String[] args) {

new Client();

}

}

2Q==

已赞过

已踩过<

你对这个回答的评价是?

评论

收起

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值