这是我的计划应该如何。在第一帧中,存在用户输入文本的textfield1,当他按下按钮时,将显示具有textfield2的新帧,textfield2显示来自textfield1的输入文本。请帮我解释一下语法。我还是java的初学者。非常感谢你们。
第一帧:
textfield= new JTextField();
textfield.setPreferredSize( new Dimension(200,30) ) ;
textfield.setSize( textfield.getPreferredSize() ) ;
textfield.setLocation(95,198) ;
textfield.setSize(175,28);
cont.add(textfield);
public void actionPerformed(ActionEvent e) {
this.setVisible(false);
new Frame2().setVisible(true); //displays the 2nd frame right?
}
现在我不知道我的第二帧怎么办或者从哪里开始因为我无法从第一帧获得变量
答案 0 :(得分:1)
您可以在Frame2
:
Frame2 frame2 = new Frame2(textfield.getText());
frame2.setVisible(true);
答案 1 :(得分:1)
您需要做的就是 - 使用textfield2定义第二帧的新构造函数:
public Frame2(String toDisplay){
textfield2 = new JTextField(toDisplay);
}
答案 2 :(得分:0)
试试这个: (只需复制到默认包中名为FrameTest.java的新文件中)
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class FrameTest extends JFrame {
public static void main(String[] args) {
JFrame frame = new FrameTest();
frame.pack();
frame.setVisible(true);
}
public FrameTest() {
JPanel panel = new JPanel();
final JTextField textField = new JTextField();
textField.setPreferredSize(new Dimension(100, 20));
panel.add(textField);
JButton button = new JButton("press me");
panel.add(button);
setContentPane(panel);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
FrameTest.this.setVisible(false);
Frame2 secondFrame = new Frame2(textField.getText());
secondFrame.pack();
secondFrame.setVisible(true);
}
});
}
class Frame2 extends JFrame {
public Frame2(String text) {
getContentPane().add(new JTextField(text));
}
}
}