java菜单面板设置完能关闭_用Java创建一个屏幕外框架(或者:当所有应用程序窗口关闭时,如何避免Mac上的空白菜单)?...

你一定要考虑WizardOfOdds非常有用的答案.正确使用

“The Application Menu”将有所帮助,并且很容易设置最小的

Info.plist开始.持久的文件菜单将允许您的应用程序在其他人关闭时打开一个新窗口.这个

answer链接到一个简单的

example.

虽然Apple的Human Interface Guidelines是您用户期望的绝佳指南,但您当然可以尝试使用您在问题中建议的方法.特别是,您可以在不可见窗口上尝试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);

}

});

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值