java编写空白窗口_在Java中创建屏幕外框(或:关闭所有应用程序窗口时,如何避免在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);

}

});

}

}

2020-11-01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值