怎么让java两个类之间进行交互

其中一个类运行之后有文本框,别外一个类运行之后。有一个按钮,点下按钮可以设置文本框的内容。这两个类在不同文件下的能不能举个具体的例子,,怎么保存对方的引用...... 其中一个类运行之后有文本框,别外一个类运行之后。有一个按钮,点下按钮可以设置文本框的内容。这两个类在不同文件下的
能不能举个具体的例子,,怎么保存对方的引用 ...
展开
 我来答
Jseven_jy
推荐于2017-09-16 · TA获得超过8122个赞
知道大有可为答主
回答量:2499
采纳率:100%
帮助的人:1136万
展开全部
HI我..
通过构造方法就可以把那个引用传过去了。。
如果你是在一个窗口干什么后打开另一个窗口的。。就是说你在一个窗口中打开另一个窗口的。。
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();
}
}
千锋教育
2015-12-06 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部

参考下面代码

Class A{
   void prt(){
     System.out.println("nonStatic");
   }
   static void staticPrt(){
     System.out.println("static");
   } 
}
class B{
   public static void main(String[] args){
     A a = new A();
     a.prt(); // 非静态方法通过对象调用
     A.staticPrt(); // 静态方法通过类名直接调用
   }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hjqshuai
2010-07-25
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
1.针对这个问题。。。我们常用内部类来解决。。将有按钮响应的类设置在文本框类的里面。这样就可以访问文本框了。
如果是在一个窗口的话,可以用本类做监听器,如
class chuankou extends JFrame implements ActionListener
{ JTextField t;
JButton b1;
chuankou()
{
t=new JTextField(20);
b=new JButton("提交");
b.addActionListener(this);

public void actionPerformed(ActionEvent e)
{
t.setText("你好");
}
}
这样在点击时就可以直接访问文本框数据。
2.如果是2个不同窗口的话。把文本域的值设置为public static这样就可以直接在响应函数用 类名.文本域名 访问。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6606ac94b
2010-07-25 · TA获得超过1151个赞
知道小有建树答主
回答量:1331
采纳率:0%
帮助的人:1275万
展开全部
每一个类的成员变量中保存对方的引用,然后初始化的时候进行设置,在监听事件的时候就可以引用了
例子:
class A{
B b;
void setB(B b) {this.b = b;}
void method1(){
System.out.println(this.b);
}
}
class B {
A a;
void setA(A a) {this.a = a;}
void method2() {
System.out.println(this.a);
}
}
public class Test() {
public static void main(String[] args) {
A a1 = new A();
B b1 = new B();
a1.setB(b1);
b1.setA(a1);
a1.method1();
b1.method2();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祚胤17
2010-07-25 · TA获得超过786个赞
知道大有可为答主
回答量:1149
采纳率:82%
帮助的人:263万
展开全部
使用公有静态变量,前缀“public static”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式