小编典典
您绝对应该考虑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);
}
});
}
}
2020-11-01