Java:孩子可能会杀死父母吗?

时间:2010-09-24 21:00:26

标签: java

在下面的代码片段中,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);
        ...

3 个答案:

答案 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(); 
        ...