버튼은 클릭 시 액션 이벤트를 트리거하는 컨트롤입니다. JavaFX는 일반 버튼, 토글 버튼, 체크박스 버튼, 라디오 버튼을 제공합니다. 이러한 버튼의 공통 기능은 아래 그림과 같이 ButtonBase 및 Labeled 클래스에 정의되어 있습니다.
Labeled 클래스는 라벨과 버튼의 공통 속성을 정의합니다. 버튼의 작업을 처리하기 위한 핸들러를 설정하는 ButtonBase 클래스에 정의된 onAction 속성이 버튼에 있다는 점을 제외하면 버튼은 레이블과 같습니다.
아래 코드는 아래 그림과 같이 버튼을 사용하여 텍스트의 이동을 제어하는 프로그램을 제공합니다.
package application; import javafx.application.Application; import javafx.stage.Stage; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Pane; import javafx.scene.text.Text; public class ButtonDemo extends Application { protected Text text = new Text(50, 50, "JavaFX Programming"); protected BorderPane getPane() { HBox paneForButtons = new HBox(20); Button btLeft = new Button("Left", new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/lo.jpg")); Button btRight = new Button("Right", new ImageView("file:/C:/Users/Paul/development/MyJavaFX/src/application/image/lo.jpg")); paneForButtons.getChildren().addAll(btLeft, btRight); paneForButtons.setAlignment(Pos.CENTER); paneForButtons.setStyle("-fx-border-color: green"); BorderPane pane = new BorderPane(); pane.setBottom(paneForButtons); Pane paneForText = new Pane(); paneForText.getChildren().add(text); pane.setCenter(paneForText); btLeft.setOnAction(e -> text.setX(text.getX() - 10)); btRight.setOnAction(e -> text.setX(text.getX() 10)); return pane; } @Override // Override the start method in the Application class public void start(Stage primaryStage) { // Create a scene and place it in the stage Scene scene = new Scene(getPane(), 450, 200); primaryStage.setTitle("ButtonDemo"); // Set the stage title primaryStage.setScene(scene); // Place the scene in the stage primaryStage.show(); // Display the stage } public static void main(String[] args) { Application.launch(args); } }
프로그램은 두 개의 버튼 btLeft 및 btRight를 생성하며 각 버튼에는 텍스트와 이미지가 포함됩니다(18-19행). 버튼은 HBox(라인 20)에 배치되고 HBox는 테두리 창(라인 25)의 하단에 배치됩니다. 텍스트는 14행에서 생성되고 테두리 창 중앙(29행)에 배치됩니다. btLeft에 대한 작업 핸들러는 텍스트를 왼쪽으로 이동합니다(라인 31). btRight에 대한 작업 핸들러는 텍스트를 오른쪽으로 이동합니다(32행).
프로그램은 의도적으로 보호된 getPane() 메소드를 정의하여 창을 반환합니다(라인 16). 이 메서드는 향후 예제에서 하위 클래스로 재정의되어 창에 더 많은 노드를 추가합니다. 텍스트는 서브클래스에서 액세스할 수 있도록 보호됨으로 선언됩니다(14행).
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3