Menu global para aplicativos JavaFX

13

Eu sei que podemos habilitar o menu global para aplicativos Java Swing usando o Jayatana. Mas estou procurando suporte de menu global para aplicativos JavaFX . Depois de pesquisar, descobri que setUseSystemMenuBar é usado no JavaFX para ativar o mesmo tipo de comportamento no Mac. Mas não está funcionando no Ubuntu.

Meu código Java:

import javafx.application.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.paint.*;
import javafx.stage.*;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 300, 250, Color.WHITE);

        MenuBar menuBar = new MenuBar();
        // Use system menu bar
        menuBar.setUseSystemMenuBar(true);
        menuBar.prefWidthProperty().bind(primaryStage.widthProperty());
        root.setTop(menuBar);

        Menu fileMenu = new Menu("File");

        Menu webMenu = new Menu("Web");

        Menu sqlMenu = new Menu("SQL");

        menuBar.getMenus().addAll(fileMenu, webMenu, sqlMenu);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Saída:

Além disso, há um relatório de bug sobre este problema aqui: Gtk: Implementar o suporte da barra de menus do sistema global

Existem soluções alternativas para resolver este problema?

    
por Gobinath 02.11.2015 / 03:20

2 respostas

0

Se não estiver resolvido. Você pode tentar usar o arquivo fxml separado para projetar a interface do usuário. Use o construtor de cena para o mesmo. Criador de cenas , baixe o mesmo de aqui .

Eu tentei o mesmo no Ubuntu 16.04 e funciona bem. Espero que ajude.

    
por mohammed thaha jk 19.04.2018 / 18:39
0

Olhando para o código, e não sou um desenvolvedor de FX experiente, mas parece a linha "root.setTop (menuBar);" está localizando a barra de menu na parte superior do contêiner, não na linha superior do total de exibição. Eu acho que algum outro comando é necessário. Eu só tenho experiência Java AWT e Swing e pode estar errado.

    
por DeepExplorer 21.05.2018 / 17:46