[java] JavaFX 메뉴와 팝업 메뉴 구현하기
이번 포스트에서는 JavaFX를 사용하여 메뉴와 팝업 메뉴를 구현하는 방법에 대해 알아보겠습니다.
1. 메뉴 구현하기
JavaFX에서 메뉴를 구현하려면 MenuBar
, Menu
및 MenuItem
클래스를 사용해야 합니다.
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.layout.BorderPane;
import javafx.stage.Stage;
public class MenuExample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
BorderPane root = new BorderPane();
MenuBar menuBar = new MenuBar();
Menu fileMenu = new Menu("File");
MenuItem newItem = new MenuItem("New");
MenuItem openItem = new MenuItem("Open");
MenuItem saveItem = new MenuItem("Save");
MenuItem exitItem = new MenuItem("Exit");
fileMenu.getItems().addAll(newItem, openItem, saveItem, exitItem);
menuBar.getMenus().add(fileMenu);
root.setTop(menuBar);
Scene scene = new Scene(root, 400, 300);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
위의 예제에서는 MenuBar
에 Menu
를 추가하고, 각 메뉴에 MenuItem
을 추가합니다. 그리고 MenuBar
를 최상위 컨테이너인 BorderPane
의 상단에 위치시킵니다.
2. 팝업 메뉴 구현하기
팝업 메뉴는 오른쪽 마우스 버튼을 클릭했을 때 나타나는 메뉴입니다. JavaFX에서 팝업 메뉴를 구현하려면 ContextMenu
클래스를 사용해야 합니다.
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.ContextMenu;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.AnchorPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class PopupMenuExample extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
AnchorPane root = new AnchorPane();
Scene scene = new Scene(root, 400, 300);
Rectangle rectangle = new Rectangle(100, 100, Color.BLUE);
ContextMenu contextMenu = new ContextMenu();
MenuItem redItem = new MenuItem("Red");
MenuItem greenItem = new MenuItem("Green");
MenuItem blueItem = new MenuItem("Blue");
redItem.setOnAction(event -> rectangle.setFill(Color.RED));
greenItem.setOnAction(event -> rectangle.setFill(Color.GREEN));
blueItem.setOnAction(event -> rectangle.setFill(Color.BLUE));
contextMenu.getItems().addAll(redItem, greenItem, blueItem);
rectangle.setOnContextMenuRequested(event -> {
contextMenu.show(rectangle, event.getScreenX(), event.getScreenY());
});
root.getChildren().add(rectangle);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
위의 예제에서는 ContextMenu
를 생성하고, MenuItem
을 추가합니다. 각 MenuItem
의 클릭 이벤트에서는 사각형의 색을 변경합니다. ContextMenu
는 setOnContextMenuRequested
메소드를 사용하여 사용자가 사각형을 마우스 오른쪽 버튼으로 클릭했을 때 화면에 표시됩니다.
이렇게 JavaFX를 사용하여 메뉴와 팝업 메뉴를 구현할 수 있습니다. 자세한 내용은 JavaFX 공식 문서를 참조하시기 바랍니다.