在确信("受过教育")Mac上的Swing应用程序确实看起来很原生之后,我试图让我的外观尽可能本地化.一切看起来都很棒,但当我点击command+ Q或从菜单中执行此操作时,windowStateChanged(WindowEvent e)我的主要JFrame没有触发(如果我以任何其他方式退出,它会触发).我如何回应真正的Apple退出?
我一直在尝试并且未能在OSX系统的主显示器上使用java全屏模式.无论我尝试过什么,我似乎都无法摆脱显示屏顶部的"苹果"菜单栏.我真的需要在整个屏幕上画画.谁能告诉我如何摆脱菜单?
我附上了一个展示问题的示例类 - 在我的系统上,菜单仍然可见,我希望看到一个完全空白的屏幕.
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
public class FullScreenFrame extends JFrame implements KeyListener {
public FullScreenFrame () {
addKeyListener(this);
setUndecorated(true);
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
if (gd.isFullScreenSupported()) {
try {
gd.setFullScreenWindow(this);
}
finally {
gd.setFullScreenWindow(null);
}
}
else {
System.err.println("Full screen not supported");
}
setVisible(true);
}
public void keyTyped(KeyEvent e) {}
public void keyPressed(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
setVisible(false);
dispose();
}
public static void main (String [] args) {
new FullScreenFrame();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在制作Mac应用程序,我希望我的菜单栏看起来正确.
任何Mac用户都知道菜单栏应该在顶部屏幕菜单中.在属性列表文件中设置apple.laf.useScreenMenuBar为true删除框内菜单栏并将当前聚焦窗口的菜单栏移动到屏幕菜单.
但是,当所有窗口都隐藏或没有窗口时,没有菜单栏移动到顶部,你只需要一个空白菜单.我听说解决这个问题的方法是创建一个在没有其他人的时候聚焦的屏幕外窗口.它的唯一目的是它的菜单,以便当其他菜单消失时它可以填写.
但是,我遇到了很多问题.我似乎无法将窗口移出屏幕,因为Macs不允许您将坐标设置为超出屏幕大小的位置; 它只是将它切断并将其定位在边缘.制作屏幕外窗口还有什么我需要做的吗?
我有一个编译的可执行JAR文件在Windows平台上失败.
原因是我想要正确地集成某些特定于OS X的属性 - 例如" 关于"窗口.
即使我特意使用条件封锁了代码,JAR仍然NoClassDefFoundError在第一行执行时崩溃.
if (isOSX()) {
com.apple.eawt.Application application = com.apple.eawt.Application.getApplication();
application.setAboutHandler(new com.apple.eawt.AboutHandler() {
@Override
public void handleAbout(com.apple.eawt.AppEvent.AboutEvent ae) {
new AboutWindow();
}
});
application.setDefaultMenuBar(MenuSystem.createMenu());
}
Run Code Online (Sandbox Code Playgroud)
是否可以在我的JAR文件中包含此代码,以便我可以拥有一个一致的代码库?