2017-06-13 11 views
0
public class MyClass extends JFrame implements ActionListener { 

public MyClass() { 
    super("Frame Window"); 
    setLayout(new FlowLayout()); 
    setSize(700, 500); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JButton setInv = new JButton("set invisible"); 
    setInv.setVisible(true); 
    setInv.setPreferredSize(new Dimension(50, 50)); 
    add(setInv); 

} 

public static void main(String[] args) { 
    MyClass obj = new MyClass(); 
    obj.setVisible(true); 

} 

public void actionPerformed(ActionEvent e) { 
    if (e.getActionCommand() == "set invisible") { 


    // I want an Accessor method for the parent JFrame and then I want to 
    // set it invisible here! 

    } 
} 
} 

一个人建议getParent()方法,但它不工作,因为我想要的! getParent()回报在这种情况下,JFrame我觉得有些容器..在java中有没有Accessor方法来获取在我的类的构造函数中初始化的当前JFrame对象?

我已经试过getParent().setInvisible(false); 但没有任何反应.. 我知道这是错误在我的逻辑或东西,但我应该怎么办?

Java很灵活,但在很多方面都有例外!

有一件事是,如果我不从JFrame扩展MyClass并创建一个公共实例JFrame,然后setVisible(false);可以通过其参考调用! 但我不想这样做......因为我已经做了很多课程的项目,我不想像这样改变我的代码... 任何帮助家伙!

+3

的[获取在Java应用程序的任何/所有活动JFrames?(可能的复制https://stackoverflow.com/questions/7364535/get-any-all-active- jframes-in-java-application) – Berger

+0

也看看这个:https://stackoverflow.com/questions/513832/how-do-i-compare-strings-in-java – Berger

+0

没有用.. JFrame没有隐藏或任何! –

回答

0

您还没有在您的JButton中添加ActionListener。另外,你不会在ActionListener中处置或隐藏你的JFrame

附注:StringObject。使用String::equals而不是==

public class MyClass extends JFrame implements ActionListener { 

    public MyClass() { 
     super("Frame Window"); 
     setSize(700, 500); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JButton setInv = new JButton("set invisible"); 
     setInv.addActionListener(this); 
     add(setInv); 
    } 

    public static void main(String[] args) { 
     MyClass obj = new MyClass(); 
     obj.setVisible(true); 

    } 

    public void actionPerformed(ActionEvent e) { 
     if ("set invisible".equals(e.getActionCommand())) { 
      dispose(); 
     } 
    } 
} 
0

只需

if (e.getActionCommand() == "set invisible") { 
     setVisible(false); // or this.setVisible(false); 
} 
相关问题