两个不同的java文件下有两个Frame1、Frame2,如何才能让Frame1的按钮控制Frame2的TextField的文本显示? 10
2个回答
展开全部
要么把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);
代码肯定错的,只是提供思路
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
将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;
}
}
参考代码
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修饰,
反了,这个改一下标签就可以了,
如果还不行,只能将你的代码发来看看。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询