【发布时间】:2014-02-28 14:23:49
【问题描述】:
您好,我想知道如何处理另一个 jFrame,因为我想创建该类的新实例,并在其文本字段中使用新值,所以第一个 jFrame 是这样的:
public class Frame1 extends javax.swing.JFrame implements ActionListener {
Frame2 f;
public Frame1() {
initComponents();
this.setLocationRelativeTo(null);
}
private void rbtnShowFrame2ActionPerformed(java.awt.event.ActionEvent evt) {
f = new Frame2();
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
this.dispose(); //I TRIED TO DISPOSING IT HERE BUT DOESN'T WORK
}
}
所以我想在另一个 jFrame 中仅当我触发按钮执行的事件操作时才处置 jFrame1,如果这没有发生我不想处置它,我不知道我是否可以这样做使用 ActionListener,这是第二个 jFrame:
public class Frame2 extends javax.swing.JFrame {
public Frame2() {
initComponents();
this.setLocationRelativeTo(null);
Frame1 f1 = new Frame1();
this.cmdOk.addActionListener(cGUI);
}
private void cmdOkActionPerformed(java.awt.event.ActionEvent evt) {
//Here is where i want to dispose() the other jFrame1
//to create a new instance and pass the value using public static jTextFields
f1.labelNumeroCotizacion.setText(this.labelNumCotizacionEnviar.getText());
f1.setVisible(true);
}
}
对不起我的代码,我是使用 OOP 的新手!谢谢大家....
【问题讨论】:
-
旁注:您真的想用另一个框架替换一个框架吗?只是更换里面的面板怎么样?或者,如果它只是关于文本字段值,那么如何在框架中的字段上调用
set方法。 -
我真的很想更改 jTextFields 中的值,但我不知道我是否只能使用 setter 和 getter 来做到这一点,因为我发现的唯一方法是使用新实例,但我不知道你能不能帮我给我带来另一个想法,谢谢你的回答!
-
在 Frame1 中创建文本字段的成员变量。然后为 Frame1 为每个将调用
field.setText(text)的字段提供一个 set 方法,或者为框架提供一个大的setData方法,其中包含一个包含所有值作为成员的复合对象。 -
好的,我明白了,我遇到的问题是我必须从另一个类创建一个实例,来执行 jTextFields 的 getter 和 setter,所以我必须创建一个新对象,并且我无法将值传递给较早的 jFrame...
-
无论哪种方式,您都需要在 Frame2 中保留对 Frame1 实例的引用。想要处理它或使用 setter 是一样的。看看 Awefully Awesome 的代码。他将 FrameA 的实例传递给 FrameB 的构造函数。
标签: java swing oop actionlistener