수색…


액션 리스너 추가하기

버튼은 활성화 될 때 액션 이벤트를 시작합니다 (예 : 클릭 한 상태, 버튼의 키 바인딩을 누르면 ...).

button.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
        System.out.println("Hello World!");
    }
});

Java 8 이상을 사용하는 경우 액션 리스너에 람다를 사용할 수 있습니다.

button.setOnAction((ActionEvent a) -> System.out.println("Hello, World!"));
// or
button.setOnAction(a -> System.out.println("Hello, World!"));

버튼에 그래픽 추가하기

버튼에는 그래픽이있을 수 있습니다. graphicProgressBar 와 같은 모든 JavaFX 노드가 될 수 있습니다.

button.setGraphic(new ProgressBar(-1));

ImageView

button.setGraphic(new ImageView("images/icon.png"));

또는 다른 단추

button.setGraphic(new Button("Nested button"));

버튼 만들기

Button 만들기는 간단합니다.

Button sampleButton = new Button();

그러면 텍스트 나 그래픽이없는 새 Button 이 만들어집니다.

텍스트가있는 Button 을 만들려면 String 을 매개 변수로 사용하는 생성자를 사용하면됩니다 ( ButtontextProperty 를 설정 함).

Button sampleButton = new Button("Click Me!");

내부 또는 다른 Node 내부에 그래픽이있는 Button 을 만들려면 다음 생성자를 사용하십시오.

Button sampleButton = new Button("I have an icon", new ImageView(new Image("icon.png")));

기본 및 취소 버튼

Button API를 사용하면 Scene 할당 된 단축키 목록에 액세스하거나 키 이벤트를 명시 적으로 듣지 않고도 일반적인 키보드 단축키를 버튼에 쉽게 할당 할 수 있습니다. 즉, 다음 두 가지 편리한 메소드가 제공됩니다 : setDefaultButtonsetCancelButton :

  • setDefaultButtontrue 설정하면 KeyCode.ENTER 이벤트를받을 때마다 Button 이 실행됩니다.

  • setCancelButtontrue 설정하면 KeyCode.ESCAPE 이벤트를받을 때마다 Button 이 실행됩니다.

다음 예제에서는 포커스가 있는지 여부에 관계없이 입력 또는 이스케이프 키를 누를 때 발생하는 두 개의 버튼이있는 Scene 을 만듭니다.

FlowPane root = new FlowPane();
        
Button okButton = new Button("OK");
okButton.setDefaultButton(true);
okButton.setOnAction(e -> {
    System.out.println("OK clicked.");
});
        
Button cancelButton = new Button("Cancel");            
cancelButton.setCancelButton(true);
cancelButton.setOnAction(e -> {
    System.out.println("Cancel clicked.");
});
        
root.getChildren().addAll(okButton, cancelButton);
Scene scene = new Scene(root);

이러한 KeyEvents 가 부모 Node 의해 소비되는 경우 위 코드는 작동하지 않습니다.

scene.setOnKeyPressed(e -> {
    e.consume();
});


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow