如何在 JavaFX 中建立自定義選單項?


選單是一系列呈現給使用者的選項或命令列表,通常選單包含執行某些操作的專案。選單的內容稱為選單項,選單欄包含多個選單。

在 JavaFX 中,選單由 javafx.scene.control.Menu 類表示,選單項由 javafx.scene.control.MenuItem 類表示,而 javafx.scene.control.MenuBar 類表示選單欄。要建立選單 -

  • 例項化 Menu 類。

  • 透過例項化 MenuItem 類建立所需數量的選單項。

  • 將所有選單項新增到選單中,如下所示 -

fileMenu.getItems().addAll(item1, item2, item3);
  • 透過例項化 MenuBar 類建立一個選單欄。

  • 將所有建立的選單新增到選單欄中,如下所示 -

menuBar.getMenus().addAll(fileMenu, fileList, skin);
  • 將選單欄新增到場景中。

自定義選單項

JavaFX 提供了一個名為 javafx.scene.control.CustomMenuItem 的類(MenuItem 的子類),您可以在其中嵌入任意節點,即使用此類,您可以將任意節點(如滑塊、超連結等)新增到選單中。

此類提供了一個名為 content 的屬性,用於指定要顯示的節點。您可以使用 **setContent()** 方法將值設定為此屬性。

要將節點新增到 CustomMenuItem,您需要將其物件作為引數傳遞給 CustomMenu 類建構函式的 setContent() 方法。

注意 - 如果您以這種方式將任意節點新增到選單中,它們看起來會更自然。

示例

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.CustomMenuItem;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.Slider;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class CustomMenuItemExample extends Application {
   @Override
   public void start(Stage stage) {
      //Creating a slider
      Slider slider = new Slider(0, 100, 0);
      slider.setShowTickLabels(true);
      slider.setShowTickMarks(true);
      slider.setMajorTickUnit(25);
      slider.setBlockIncrement(10);
      slider.setPrefWidth(200);
      slider.setStyle("-fx-background-color: GRAY");
      //Creating a Hiperlink
      Hyperlink link = new Hyperlink("https://tutorialspoint.tw");
      link.setStyle("-fx-background-color: floralwhite");
      //Creating menu
      Menu fileMenu = new Menu("File");
      //Creating the custom menu Items
      CustomMenuItem menuItem1 = new CustomMenuItem(slider);
      menuItem1.setHideOnClick(false);
      CustomMenuItem menuItem2 = new CustomMenuItem(link);
      menuItem2.setHideOnClick(false);
      fileMenu.getItems().addAll(menuItem1, menuItem2);
      //Creating a menu bar and adding menu to it.
      MenuBar menuBar = new MenuBar(fileMenu);
      menuBar.setTranslateX(200);
      menuBar.setTranslateY(20);
      //Setting the stage
      Group root = new Group(menuBar);
      Scene scene = new Scene(root, 595, 200, Color.BEIGE);
      stage.setTitle("CustomMenuItem");
      stage.setScene(scene);
      stage.show();
   }
   public static void main(String args[]){
      launch(args);
   }
}

輸出

更新於: 2020年5月20日

341 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.