Menu globale per le applicazioni JavaFX


14

So che possiamo abilitare il menu globale per le applicazioni Java Swing usando Jayatana. Ma sto cercando il supporto del menu globale per le applicazioni JavaFX . Dopo averlo cercato, ho scoperto che setUseSystemMenuBar viene utilizzato in JavaFX per abilitare lo stesso tipo di comportamento in Mac. Ma non funziona in Ubuntu.

Il mio codice 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);
    }
}

Produzione:

Menu JavaFX in Ubuntu

Inoltre c'è una segnalazione di bug relativa a questo problema qui: Gtk: implementa il supporto della barra dei menu del sistema globale

Esistono soluzioni alternative per risolvere questo problema?


Lo hai già scoperto?
Socrate,

@Socrate non ancora.
Gobinath,

Risposte:


1

Guardando il codice, non sono uno sviluppatore FX esperto, ma sembra la riga "root.setTop (menuBar);" sta individuando la barra dei menu nella parte superiore del contenitore, non nella riga superiore della visualizzazione totale. Penso che sia necessario qualche altro comando. Ho solo esperienza Java AWT e Swing e potrei sbagliarmi.


0

Se non risolto già. Puoi provare a utilizzare un file fxml separato per progettare l'interfaccia utente. Usa lo scene builder per lo stesso. Scene builder , scarica lo stesso da qui .

Ho provato lo stesso in Ubuntu 16.04 e funziona benissimo. Spero che sia d'aiuto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.