Java 如何在两个jframe之间传递值
我有两个Java 如何在两个jframe之间传递值,java,swing,Java,Swing,我有两个jframes, 我想从打开的另一个jframe到其他打开的jframe获取值。 当单击jframe1打开显示jframe2的按钮并在文本字段中键入一些文本,然后单击ok按钮时,文本字段值要获取jframe1jlable。如何做到这一点我试过,但我找不到一个方法来做到这一点 这可能吗 使用回调 将此代码添加到项目中: 定义接口 添加到jframe 2: 添加到jframe 1: 现在,每次jframe2调用接口方法时,您都会得到对jframe1中TODO标签的异步调用 创建一个在
jframes
,
我想从打开的另一个jframe
到其他打开的jframe
获取值。
当单击jframe1
打开显示jframe2
的按钮并在文本字段中键入一些文本,然后单击ok
按钮时,文本字段值要获取jframe1
jlable
。如何做到这一点我试过,但我找不到一个方法来做到这一点
这可能吗
使用回调
将此代码添加到项目中:
定义接口
添加到jframe 2:
添加到jframe 1:
现在,每次jframe2调用接口方法时,您都会得到对jframe1中TODO标签的异步调用
创建一个在jframe2中接受jframe1的方法
在OpenButtonAction事件中,从jframe2创建一个对象,并调用接受jframe1的方法
因此,当您单击jframe2中的Ok按钮时,通过methdo将该文本字段值传递给jframe1对象(您传递给jframe2)
public class jframe1 {
public void actionPerformed(ActionEvent a){
jfame2 jf2 = new jframe2();
jf2.setJframe1(this);
}
public void updateLable(String value){
lblIdk.setText(value);
}
}
public class jframe2 {
private jframe1 jf1;
public void setJframe1(jframe1 jf1){
this.jf1 = jf1;
}
public void actionPerformed(ActionEvent a){
this.jf1.updateLable(txtidk.getText());
}
}
在这两个JFrame之间使用回调接口…使用@Ashan创建另一个JFrame?你能多发一点代码让我们帮你吗?在这种情况下,jOptionPane不是一个解决方案@SergiyMedvynskyy:(感谢您使用模式对话框,它将阻止您的代码执行,直到窗口关闭,此时您可以使用getter从其他类获取值,或者只需使用模式对话框并等待它关闭public void setCallback(){jframe.addCallback(myListener);}
要添加此回调的jframe是什么?)???
private ICallbackListener myListener;
public void addCallback(ICallbackListener myListener){
this.myListener = myListener;
}
...
if(myListener!=null){
myListener.onNewEvent("myMessage");
}
...
private ICallbackListener myListener;
ICallbackListener i = new ICallbackListener() {
@Override
public void onNewEvent(String msg) {
// TODO Auto-generated method stub
}
};
public void setCallback( ){
jframe2.addCallback(myListener);
}
import java.awt.FlowLayout;
import javax.swing.*;
import java.awt.event.*;
class TestFrameExample extends JFrame implements ActionListener{
static JLabel label ;
public static TestFrameExample test;
TestFrameExample()
{
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
label = new JLabel("This is a label!");
JButton button = new JButton("Open");
button.setText("Press me");
button.addActionListener(this);
panel.add(label);
panel.add(button);
add(panel);
setSize(300, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public void actionPerformed(ActionEvent a)
{
new TestFrameExample1();
}
public static void main(String s[]) {
test=new TestFrameExample();
}
}
class TestFrameExample1 extends JFrame implements ActionListener {
JTextField t;
TestFrameExample test;
public TestFrameExample1()
{
setSize(300, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setLayout(null);
t=new JTextField();
t.setBounds(100,20,150,20);
JButton button=new JButton("oK");
button.setBounds(100,50,100,30);
button.addActionListener(this);
add(t);
add(button);
}
public void actionPerformed(ActionEvent a)
{
test.label.setText(t.getText());
}
}
public class jframe1 {
public void actionPerformed(ActionEvent a){
jfame2 jf2 = new jframe2();
jf2.setJframe1(this);
}
public void updateLable(String value){
lblIdk.setText(value);
}
}
public class jframe2 {
private jframe1 jf1;
public void setJframe1(jframe1 jf1){
this.jf1 = jf1;
}
public void actionPerformed(ActionEvent a){
this.jf1.updateLable(txtidk.getText());
}
}