基于上图;我希望Frame1使用New(Jbutton)显示Frame2,使用Show(JButton)显示Frame3。 Frame3有这个默认的“Hello World”(JtextField),我想使用Frame2中的Yes(JButton)将其设置为空。
问题是我不知道Frame2的代码以及如何从frame3清空文本字段。
到目前为止,这是我的代码:
Frame1.java
public class Frame1 extends JFrame implements ActionListener{
JButton b1 = new JButton("New");
JButton b2 = new JButton("Show");
Frame2 f2 = new Frame2();
Frame3 f3 = new Frame3();
public Frame1(){
setLayout(new FlowLayout());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
add(b1);
add(b2);
b1.addActionListener(this);
b2.addActionListener(this);
}
public static void main(String args[]){
new Frame1();
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1){
f2.setVisible(true);
}
else{
f3.setVisible(true);
}
}
}
Frame2.java
public class Frame2 extends JFrame implements ActionListener{
JButton b1 = new JButton("Yes");
JButton b2 = new JButton("No");
public Frame2(){
setLayout(new FlowLayout());
setVisible(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,100);
add(b1);
add(b2);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1){
}else{
}
}
}
Frame3.java
public class Frame3 extends JFrame{
JTextField t1 = new JTextField("Hello WOrld");
public Frame3(){
setLayout(new FlowLayout());
setVisible(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(200,200);
add(t1);
}
}
答案 0 :(得分:1)
您只需在frame2构造函数中传递对frame3的引用,然后在单击Yes
按钮时清除frame3的JTextField
。
修改强>
当您声明帧时,您可以先创建frame3并将其传递给frame2构造函数:
Frame3 f3 = new Frame3();
Frame2 f2 = new Frame2(f3);
并在你的frame2中
Frame refToFrame3;
...
public Frame2(Frame f){
...
refToFrame3 = f;
...
...
public void actionPerformed(ActionEvent e) {
if(e.getSource()==b1){
refToFrame3.clearText()
...
然后在你的frame3中创建一个clearText
方法,它将清除JTextField中的文本。
答案 1 :(得分:1)
一些建议: