两个不同的java文件下有两个Frame1、Frame2,如何才能让Frame1的按钮控制Frame2的TextField的文本显示? 10

 我来答
百度网友d7c6135
2014-02-24 · TA获得超过821个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:194万
展开全部
要么把Frame2的TextField设置成静态,或者把Frame2的引用给Frame1
更多追问追答
追问
不好意思啊,问题反一下   就是先出现Frame1,然后Frame1中有个按钮jB1,点击出现Frame2,Frame2中有个按钮JB2。要求按下JB2,使Frame1的textField中有显示。    我弄了很久都不会弄,使JB1控制Frame2中的文本显示是可以的啊。
追答
您好,SE的东西我也不是太熟,但是思路是有的,你的这个需求分两种办法解决
1、你事先生成了Frame2,然后把Frame2的引用给frame1,在点解jB1的时候,用Frame2的引用,找到jB1,设置它的值
思路是:jB1的事件中,frame1.frame2.jB2.setText(textField.value);frame2.setVisiable(true);
2、事先不生成frame2,在按下jB1的事件中,创建Frame2,同时获得Frame1中textField的值,用这个值new一个button,set给Frame2,然后显示Frame2
思路是:jB1的事件中,f2 = new Frame2();String s = textField.value();jB2 = new Button(s);
f2.addButton(jB2);f2.setVisiable(true);
代码肯定错的,只是提供思路
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
haogecs10000
2014-02-22 · 超过23用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:60.6万
展开全部
将Frame2中的TextField设置为static就可以了
参考代码

package com.haoge.license;

import java.awt.Dimension;

import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class JFrame2 extends JFrame{
public static JTextField textField;
/**
*
*/
private static final long serialVersionUID = 1L;
public JPanel contentPanel;

public JButton newJFrame1;

/**
* @param args
*/
public void initialize() {
this.setSize(new Dimension(600, 450));
this.setTitle("JFrame2");
this.setContentPane(getContentPanel());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(false);
this.setLocation(200, 100);
this.setVisible(true);
}
public JPanel getContentPanel() {
if (contentPanel == null) {
contentPanel=new JPanel();
contentPanel.setLayout(null);

textField=new JTextField();
textField.setBounds(new Rectangle(110,114,300,30));
contentPanel.add(textField);

newJFrame1=new JButton("新建JFrame1");
newJFrame1.setBounds(new Rectangle(415,114,150,30));
newJFrame1.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
new JFrame1().initialize();
}
});
contentPanel.add(newJFrame1);

}

return contentPanel;
}

public static void main(String[] args) {
new JFrame2().initialize();
}

}

class JFrame1 extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public JPanel contentPanel;
public JButton settxt;
public JFrame1(){

}
/**
* @param args
*/
public void initialize() {
this.setSize(new Dimension(600, 450));
this.setTitle("JFrame1");
this.setContentPane(getContentPanel());
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setResizable(false);
this.setLocation(300, 100);
this.setVisible(true);
}
public JPanel getContentPanel() {
if (contentPanel == null) {
contentPanel=new JPanel();
contentPanel.setLayout(null);

settxt=new JButton("settxt(1234)");
settxt.setBounds(new Rectangle(415,114,150,30));
settxt.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
JFrame2.textField.setText("1234");
}
});
contentPanel.add(settxt);

}

return contentPanel;
}
}
更多追问追答
追问
我加了static还是不行的,我刚刚说的方向反了一下   是Frame1有一个按钮点击跳出Frame2,然后Frame2需要对Frame1的TextField文本写东西
追答
是不没加public修饰,

反了,这个改一下标签就可以了,
如果还不行,只能将你的代码发来看看。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式