在下面的代码片段中,ParentClass启动Controller然后隐藏。
能够在jMenuItemExitActionPerformed.
上杀死ParentClass会很高兴
回想起来,我应该改变父母与子女的关系,但在这一点上,这将是一个很大的变化。
有更简单的方法吗?
public class ParentClass extends javax.swing.JFrame {
private void processC() {
JFrame controller = new Controller();
this.setVisible(false);
...
public class Controller extends javax.swing.JFrame {
private void jMenuItemExitActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
...
答案 0 :(得分:2)
最简单的方法是将引用传递给父代,如下所示:
public class ParentClass extends javax.swing.JFrame {
private void processC() {
JFrame controller = new Controller(this);
this.setVisible(false);
...
public class Controller extends javax.swing.JFrame {
private ParentClass parent;
public Controller(ParentClass parent) {
this.parent = parent;
}
private void jMenuItemExitActionPerformed(java.awt.event.ActionEvent evt) {
parent.exit(); // or whatever
System.exit(0);
...
答案 1 :(得分:1)
颠倒父/子关系是更简单的方法。如果你不这样做,你将花费大量的时间和精力来解决这个问题,你会希望你刚开始就做好了。你应该按照你知道的方式制作东西。时间成本非常值得。
答案 2 :(得分:1)
像这样在ParentClass中添加公共静态出口似乎有效。
public class ParentClass extends javax.swing.JFrame {
private void processC() {
JFrame controller = new Controller();
this.setVisible(false);
...
public static void exit() {
System.exit(0);
...
public class Controller extends javax.swing.JFrame {
private void jMenuItemExitActionPerformed(java.awt.event.ActionEvent evt) {
ParentClass.exit();
...