因此,当我的JavaFX应用程序最小化到系统托盘时,我希望将其从macOS底座/应用程序切换器中删除。如果他们单击系统任务栏图标,然后选择“打开应用程序”,我希望它显示在macOS底座/应用程序切换器中,而无需重新启动应用程序。
我尝试使用未记录的PlatformImpl.setTaskbarApplication(false),但是直到重新启动它似乎没有任何作用。
我也尝试过将其打包成.app文件并添加:
<key>LSUIElement</key>
<string>1</string>
Run Code Online (Sandbox Code Playgroud)
到info.plist文件,但是直到重新启动它才起作用。
有没有人有什么建议?
当我尝试请求焦点(我在 macOS Mojave 10.14.2 上)时,当用户单击托盘图标菜单中的“显示”按钮时,它不会更改左上角的菜单栏(例如 Chrome -> java),但至少它把它带到了前面。在全屏应用程序中(例如,在全屏模式下单击 Sublime Text 中的托盘图标)时,它根本不会出现,而是显示在主桌面空间中,而不移动到它。
应该成为
但相反
当点击“显示”时...
好像什么也没发生!它会在不获得焦点或出现在顶部的情况下打开,而是出现在主“桌面”空间上。
toFront()我尝试过将其中之一进行组合,requestFocus()或者只进行其中一个,但似乎不起作用。
有人对这个问题有任何修复/解决方法吗?
这是上面用来演示该问题的简单应用程序:
package me.matetoes.dockvisibility;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.net.URL;
public class DockVisibilityTester extends Application {
public javafx.scene.control.Button hideButton;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
hideButton = new javafx.scene.control.Button("Hide");
hideButton.setOnAction(e -> handleHide());
Scene scene = new Scene(hideButton, …Run Code Online (Sandbox Code Playgroud) 所以我想做这样的事情:
@echo off
echo Before
call :test
echo After
pause
:test
echo I'm in test!
:end
echo I shouldn't be here...
Run Code Online (Sandbox Code Playgroud)
这样,它可以在说完之后再说Before之前调用test After。但是,它总是只I shouldn't be here说一说After!现在,在这个示例中并不一定是问题,但是当我有很多功能时,这可能是一个问题。谁能帮帮我吗?谢谢!:)