Saya tahu bahwa kita dapat mengaktifkan menu global untuk aplikasi Java Swing menggunakan Jayatana. Tetapi saya mencari dukungan menu global untuk aplikasi JavaFX . Setelah mencari di atasnya, saya telah menemukan bahwa setUseSystemMenuBar digunakan di JavaFX untuk mengaktifkan jenis perilaku yang sama di Mac. Tapi itu tidak berfungsi di Ubuntu.
Kode Java saya:
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);
}
}
Keluaran:
Juga ada laporan bug mengenai masalah ini di sini: Gtk: Melaksanakan dukungan bilah menu sistem global
Apakah ada solusi untuk menyelesaikan masalah ini?
Jawaban:
Melihat kodenya, dan saya bukan pengembang FX berpengalaman, tetapi sepertinya baris "root.setTop (menuBar);" menempatkan bilah menu di bagian atas wadah Anda, bukan di baris atas tampilan total. Saya pikir beberapa perintah lain diperlukan. Saya hanya memiliki pengalaman Java AWT dan Swing dan mungkin salah.
sumber
Jika belum dipecahkan. Anda dapat mencoba menggunakan file fxml terpisah untuk mendesain UI. Gunakan pembuat adegan untuk hal yang sama. Pembuat adegan , unduh hal yang sama dari sini .
Saya sudah mencoba yang sama di ubuntu 16.04 dan berfungsi dengan baik. Semoga ini bisa membantu.
sumber