Une application de jouet triviale avec une barre de menu d'écran peut être écrite comme celle-ci dans Java FX 8:
import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.input.KeyCombination; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(final String[] args) throws Exception { launch(Main.class, args); } @Override public void start(Stage stage) throws Exception { MenuBar menuBar = new MenuBar(); Menu fileMenu = new Menu("File"); MenuItem newNotebookMenuItem = new MenuItem("New Notebook..."); newNotebookMenuItem.setAccelerator(KeyCombination.keyCombination("Meta+N")); newNotebookMenuItem.setOnAction(event -> { System.out.println("Action fired"); }); fileMenu.getItems().add(newNotebookMenuItem); menuBar.getMenus().add(fileMenu); menuBar.setUseSystemMenuBar(true); VBox root = new VBox(); root.getChildren().add(menuBar); Scene scene = new Scene(root, 400, 350); stage.setScene(scene); stage.show(); } }
3 Réponses :
Essayez d'utiliser Pour plus d'informations voir: P>
et p>
J'espère que cette aide! P> system.setproperty ("Apple.laf.usescreenmenbar", "vrai"); code> p>
Cela fonctionne pour AWT / Swing mais pas pour JavaFX, qui n'est pas basé sur AWT.
Actuellement, mon astuce est la suivante:
Pane pane = new Pane(); pane.maxWidth(1); pane.maxHeight(1); pane.resize(1, 1); pane.getChildren().add(menuBar); Scene scene = new Scene(pane,1,1); scene.setFill(null); primaryStage.initStyle(StageStyle.TRANSPARENT); primaryStage.setWidth(1); primaryStage.setHeight(1); primaryStage.setScene(scene); primaryStage.show();
Voici une autre possibilité sans piste de scène, mais sachez-la d'utiliser des API privées: IMPORTANT: strong> Ceci est une solution OS X uniquement, alors vous toujours besoin d'ajouter votre menu à la scène pour d'autres systèmes d'exploitation. P> p>
Il utilise des API privées com.sun.javafx code>, donc je suppose que ce n'est pas pris en charge officiellement, mais semble bien fonctionner avec OS X Oracle Java 8. Je le couple avec un appel à
plateforme.setimplicitexit (Faux); code> Pour arrêter l'application, arrêtez-vous automatiquement lorsque la dernière fenêtre est fermée.
Vous pouvez envisager de créer un Demande de fonctionnalité JavaFX .