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 .