我正在制作Mac应用程序,并且希望菜单栏看起来正确。
任何Mac用户都知道菜单栏应位于顶部屏幕菜单中。在属性列表文件中将设置apple.laf.useScreenMenuBar
为true
会消除框内菜单栏,并将当前焦点窗口的菜单栏移至屏幕菜单。
但是,当所有窗口都被隐藏或没有窗口时,没有菜单栏可以移到顶部,而您只是得到一个空白菜单。我听说有一个解决方案,那就是创建一个无人值守的屏幕外窗口。它的唯一目的是菜单,以便其他菜单消失时可以进行填写。
但是,我遇到了很多问题。我似乎无法将窗口移出屏幕,因为Mac不允许您将坐标设置为超出屏幕大小的值。它只是将其剪下,然后定位在边缘。我还需要做其他事情来制作一个离屏窗口吗?
您绝对应该考虑WizardOfOdds的非常有用的答案。正确使用“应用程序菜单”将有所帮助,并且很容易设置Info.plist
起步金额。持久File
菜单将允许您的应用程序在其他应用程序关闭时打开新窗口。此答案链接到一个简单的示例。
尽管Apple的《
人机界面指南》
是用户期望的出色指南,但您当然可以尝试使用在问题中建议的方法。特别是,您可以尝试setLocation(Short.MIN_VALUE, Short.MIN_VALUE)
使用不可见的窗口。另外,WindowEvent
如果它以信号形式通知了最后一个可见窗口的关闭,则您可能希望以某种特殊的方式响应。
附录:当您的听众看到最后一个可见的窗口关闭时,请创建一个新的空应用程序窗口。或者,将不可见窗口移动到屏幕上并使之可见,直到用户决定如何继续。
附录:Mac OS X有助于防止将 可见的 窗口表单移出屏幕,但是很容易将 不可见的 窗口置于混乱状态,如下所示。
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
public class FrameTest extends JFrame {
private static FrameTest marco;
private static FrameTest polo;
private static class MyPanel extends JPanel {
public MyPanel() {
super(true);
final JToggleButton b = new JToggleButton("Test");
b.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
if (b.isSelected()) {
polo.setLocation(100, 100);
polo.setVisible(true);
}
else {
polo.setVisible(false);
polo.setLocation(Short.MIN_VALUE, Short.MIN_VALUE);
}
}
});
this.add(b);
}
}
public FrameTest(String title) {
super(title);
this.setLayout(new BorderLayout());
this.add(new MyPanel());
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(final String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
marco = new FrameTest("Marco");
marco.setLocationRelativeTo(null);
marco.setVisible(true);
polo = new FrameTest("Polo");
polo.setLocation(Short.MIN_VALUE, Short.MIN_VALUE);
}
});
}
}
问题内容: 在Swing中,您可以简单地用于在关闭窗口时关闭整个应用程序。 但是,在JavaFX中找不到等效项。我有多个打开的窗口,如果一个窗口关闭,我想关闭整个应用程序。用JavaFX做到这一点的方法是什么? 编辑: 我了解可以覆盖以在窗口关闭时执行一些操作。问题是应该执行什么操作才能终止整个应用程序? 类中定义的方法不执行任何操作。 问题答案: 当最后一个关闭时,应用程序自动停止。目前,您的类
问题内容: 我正在开发一个android项目,当用户下载文件时该项目显示进度对话框。 但是,当用户触摸屏幕时,进度对话框将被关闭,而无需等待100%。我已经尝试使用此: 但这不起作用。 如何避免这种情况? 更新1: 似乎setCancelable(false)可以正常工作。非常感谢您的回答,但是当持久下载并用户决定放弃下载时,这将是不可能的,因为我已经停用了back keyCode: 我该如何解决
问题内容: 当我的窗口(使用Java Swing创建)关闭时,我试图调用一个函数进行清理。在我的初始化代码中,我这样做: 但是,当我按下退出按钮时,永远不会调用函数“ formLoginWindowClosed”。我也尝试过使用java.awt.event.WindowAdapter作为参数创建侦听器,但是它也不起作用。如何创建用于关闭窗口的侦听器?提前致谢。 问题答案: 将框架设置为关闭退出时,
我运行以下代码: 当我运行代码时,pygame窗口打开,但它是一个空白(黑色)屏幕。我还收到以下错误消息:Traceback(最近一次呼叫last): 文件"C:/用户/Draco/OneDrive/文档/编程/graphics.py",第13行,screen.blit(img(0,0))TypeError:'pyplay.Surface'对象不可调用 我试图打开的图像保存为JPG文件。图像保存在
我在找东西,什么也找不到。我最初尝试了以下代码: 但是我得到一个错误,说没有叫做tkinter的模块。
对于JavaFX,通常是: 是否有方法检测TornadoFX视图关闭?