编写桌面应用程序,两个JFrame之间,JFrame1,JFrame2,它们能不能互相传递数据?
JFrame1可以传递数据给JFrame2,JFrame2能不能反过来传递数据给JFrame1?
要怎么做?
JFrame1可以传递数据给JFrame2,JFrame2能不能反过来传递数据给JFrame1?
要怎么做?
解决方案 »
- java string 旋转
- 请问eclipse能做javabean吗?我是菜鸟
- @这个程序是100的阶乘,结果怎么是负的 是不是溢出了呀
- java中怎么调用dephi控件
- 再散100分,准备开发一款手机游戏,名称暂定“轰炸东京”,求好的游戏背景和好的美工。
- (散分)学习JAVA前需要做那些准备,需要下载什么软件啊?希望高手指点。
- 哪位能提供一种高效的数据库(oracle)连接池的代码啊,谢谢
- 总是抛出空指针异常
- java新手问题---JDK,J2SE,JRE之间有什么区别?我刚刚学习JAVA,用哪一种比较好??在线等待.......
- 在html页面可以用&#xxxxx;显示字符,如"A"为A,java中如何得到一个文字的对应&#代码?
- 一个struts一个Hibernate问题 !!!
- 求高手给做个题
我想你说的控制器可能有用。不过我也不知道怎么用。我只知道用new实例化来传递数据,new 对像了,之前的信息就得不到。所以只能单方面的传递,不能双向传递。你说的控制器要怎么用呢?
可以给我一个实例吗?
举一个很简单的例子。JFrame1 传一个 String s1 给 JFrame2,JFrame1 不关闭,JFrame2显示出来,当JFrame2按一个按钮时,再传一个String s2 给 JFrame1,JFrame1不重新new也能接收到JFrame2传来的信息.
请帮忙给个例子,谢谢
package transport;import java.util.ArrayList;
import java.util.List;import javax.swing.JFrame;public class Controller {
public interface ValueChange {
public void valueChanged(String str);
} private List frameList = new ArrayList(); public Controller() {
JFrame f1 = new MyFrame1(this);
JFrame f2 = new MyFrame1(this);
JFrame f3 = new MyFrame2(this);
JFrame f4 = new MyFrame2(this); frameList.add(f1);
frameList.add(f2);
frameList.add(f3);
frameList.add(f4); f1.setVisible(true);
f2.setVisible(true);
f3.setVisible(true);
f4.setVisible(true);
} public void valueChanged(String str, ValueChange source) {
for (int i = 0; i < frameList.size(); i++) {
ValueChange vc = (ValueChange) frameList.get(i);
if (vc == source) {
continue;
} if (((JFrame) vc).hasFocus()) {
((JFrame) vc).requestFocus();
}
vc.valueChanged(str);
}
} public static void main(String args[]) {
new Controller();
}
}
package transport;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;import transport.Controller.ValueChange;public class MyFrame1 extends JFrame implements ValueChange, ActionListener { private static final long serialVersionUID = 1L; private Controller ctrl; private JTextField ta = new JTextField(20); public MyFrame1(final Controller ctrl) {
super();
this.ctrl = ctrl; getContentPane().add(ta, BorderLayout.CENTER);
JButton button = new JButton("OK");
button.addActionListener(this);
getContentPane().add(button, BorderLayout.SOUTH); pack();
setVisible(true);
} public void valueChanged(String str) {
ta.setText(str);
} public void actionPerformed(ActionEvent e) {
String str = ta.getText();
ctrl.valueChanged(str, this);
}}
package transport;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;import transport.Controller.ValueChange;public class MyFrame2 extends JFrame implements ValueChange, ActionListener { private static final long serialVersionUID = 1L; private Controller ctrl; private JTextField ta = new JTextField(20); public MyFrame2(final Controller ctrl) {
super();
this.ctrl = ctrl; getContentPane().add(ta, BorderLayout.CENTER); JButton button = new JButton("OK");
button.addActionListener(this);
getContentPane().add(button, BorderLayout.SOUTH); pack();
setVisible(true);
} public void valueChanged(String str) {
ta.setText(str);
} public void actionPerformed(ActionEvent e) {
String str = ta.getText();
ctrl.valueChanged(str, this);
}}