2017-05-29 61 views
0

我处于停滞状态,正在开发Java应用程序。 我有一系列互相打开的JFrame,一旦我打开下一个,之前的框架应该关闭。 现在,一切工作正常,我用处理来自另一个类的事件(java)

setVisible(false); 

“关闭”的框架,但我有一些问题,我产生一个具体形式: 形式有内部的一些面板,面板各有一个按钮这将打开下一个表单。现在,我想知道如何将setVisible(false)应用于包含这些面板的表单。

选择表格是包含面板的表格的名称; 我有这个事件处理每个面板的按钮提前

private void btn_scegliMouseClicked(java.awt.event.MouseEvent evt) {           
    Database.getAbitazioneByCodice(label_codice.getText()); 
    MainForm.showFrame(); 

} 

感谢按钮点击帮助。

+1

你可以使用'SwingUtilities.getWindowAncestor':https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html #getWindowAncestor(java.awt.Component) – Berger

+1

*“我有一系列的JFrames ..”* 1)请参阅[使用多个JFrames,好/坏实践?](http://stackoverflow.com/q/9554636/418556)2)为了更快地获得更好的帮助,请发布[MCVE]或[简短,独立,正确的示例](http://www.sscce.org/)。 –

+0

[如何使用CardLayout](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) – MadProgrammer

回答

0

有很多方法可以做到这一点。 一个简单的方法,你可以这样做:

class YourFrame extends JFrame implements ActionListener { 

    private YourPanel panel; 

    public YourFrame() { 
     //... 
     panel.addButtonActionListener(this); 
    } 

    public void actionPerformed(ActionEvent e) { 
     //show other Frame and hide this Frame 
    } 
} 
class YourPanel extends JPanel { 
    private JButton yourButton; 

    public void addButtonActionListener(ActionListener listener) { 
     yourButton.addActionListener(listener); 
    } 
}