เมนูระดับโลกสำหรับแอปพลิเคชัน JavaFX


14

ฉันรู้ว่าเราสามารถเปิดใช้งานเมนูทั่วโลกสำหรับแอปพลิเคชัน Java Swing โดยใช้ Jayatana แต่ฉันกำลังค้นหาการสนับสนุนเมนูระดับโลกสำหรับแอปพลิเคชันJavaFX หลังจากค้นหาแล้วฉันพบว่าsetUseSystemMenuBarใช้ใน JavaFX เพื่อเปิดใช้งานลักษณะการทำงานแบบเดียวกันใน Mac แต่มันไม่ทำงานใน Ubuntu

รหัส 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);
    }
}

เอาท์พุท:

เมนู JavaFX ใน Ubuntu

นอกจากนี้ยังมีรายงานข้อผิดพลาดเกี่ยวกับปัญหานี้ที่นี่: Gtk: ใช้การสนับสนุนแถบเมนูระบบทั่วโลก

มีวิธีแก้ไขปัญหาเฉพาะหน้าเพื่อแก้ไขปัญหานี้หรือไม่?


คุณรู้หรือยัง
โสกราตีส

@ โสกราตีสยังไม่
Gobinath

คำตอบ:


1

ดูรหัสและฉันไม่ใช่นักพัฒนา FX ที่มีประสบการณ์ แต่ดูเหมือนว่าบรรทัด "root.setTop (menuBar);" กำลังค้นหาแถบเมนูที่ด้านบนของคอนเทนเนอร์ของคุณไม่ใช่ในแถวบนสุดของจอแสดงผลทั้งหมด ฉันคิดว่าจำเป็นต้องมีคำสั่งอื่น ฉันมีประสบการณ์ Java AWT และ Swing เท่านั้นและอาจผิด


0

ถ้าไม่แก้ไขแล้ว คุณสามารถลองใช้ไฟล์ fxml แยกกันเพื่อออกแบบ UI ใช้เครื่องมือสร้างฉากสำหรับสิ่งเดียวกัน สร้างฉากดาวน์โหลดเดียวกันจากที่นี่

ฉันได้ลองแบบเดียวกันใน Ubuntu 16.04 และใช้งานได้ดี หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.