1
我想通過單擊位於放置在我想要關閉的JFrame上的JPanel的按鈕來處理我的JFrame。通過點擊從內部JPanel來處理JFrame
我試圖在JFrame類上做一個靜態方法,但是當然我的IDE告訴我這不會發生。
任何想到解決方案的人?
謝謝!
我想通過單擊位於放置在我想要關閉的JFrame上的JPanel的按鈕來處理我的JFrame。通過點擊從內部JPanel來處理JFrame
我試圖在JFrame類上做一個靜態方法,但是當然我的IDE告訴我這不會發生。
任何想到解決方案的人?
謝謝!
試試這個:
public class DisposeJFrame extends JFrame{
JPanel panel = new JPanel();
JButton button = new JButton("Dispose JFrame");
public DisposeJFrame(){
super();
setTitle("Hi");
panel.add(button);
add(panel);
pack();
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
dispose();
}
});
}
public static void main(String args[]){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
DisposeJFrame jf = new DisposeJFrame();
jf.setVisible(true);
}
});
}
}
做這樣的事情:
JButton closeFrameButton = new JButton("Close");
closeFrameButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
((Window) getRootPane().getParent()).dispose();
}
});
答案與工作代碼很不錯,當他們解釋爲什麼它的作品他們是更好的。 (歡迎來到Stack Overflowtoo btw) – indivisible
調用[getTopLevelAncestor](https://docs.oracle.com/javase/8/docs/api/javax/swing/JComponent.html#getTopLevelAncestor--)比假設JRootPane更安全窗戶的直接孩子。事實上,如果組件位於JInternalFrame中,則此代碼根本無法工作。 – VGR