我正在为mac制作一个java应用程序。应用程序必须具有"自动隐藏"等于" Command + H"捷径。我试图在JFrame中使用setVisible(False)来做这件事。但它不起作用。我怎么能这样做?
这可能是代码:
void hide(){
setNormalScreen(); //disable fullscreen mode
//this.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
setVisible(false);
this.setState(JFrame.ICONIFIED);
}
这就是我得到的:
答案 0 :(得分:0)
请参阅以下示例。您可以按照建议使用setVisible(false)
通过Java代码隐藏它,然后当用户单击Dock中的应用程序时将调用appReOpened()
事件。发生这种情况时,您只需拨打setVisible(true)
即可。这应该模仿Command-H的行为。
请参阅下面的注释代码,了解更丑陋的解决方案。
public class Test extends JFrame implements ActionListener, com.apple.eawt.AppReOpenedListener {
public static void main(String[] args) {
Test frame = new Test();
JButton test = new JButton("test");
test.addActionListener(frame);
com.apple.eawt.Application app = com.apple.eawt.Application.getApplication();
app.addAppEventListener(frame);
frame.getContentPane().add(test);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
setVisible(false);
// try {
// Robot robot = new Robot();
// robot.keyPress(KeyEvent.VK_META);
// robot.keyPress(KeyEvent.VK_H);
// robot.keyRelease(KeyEvent.VK_H);
// robot.keyRelease(KeyEvent.VK_META);
// } catch (AWTException ex) {
// // TODO Auto-generated catch block
// ex.printStackTrace();
// }
}
@Override
public void appReOpened(AppReOpenedEvent arg0) {
setVisible(true);
}
}