JavaFX ——添加按钮 Button

本文介绍了如何在JavaFX中创建按钮并为其添加点击事件处理。通过实例展示了按钮的添加及使用自定义类和匿名类两种方式来实现事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

示例:

1.   添加一个按钮

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;


public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			BorderPane root = new BorderPane();//root根容器
			
			Button btn = new Button("登录");             //添加按钮
			root.setCenter(btn); 
			
			Scene scene = new Scene(root,400,400);
			scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

运行结果:



2.  添加事件处理器类 MyEventHandler

当用户点击按钮时,做相应的处理……

步骤:

1.  写一个处理器,实现EventHandler 接口                

2.  setoOnAction (new MyEventHandler());


注:  在JavaFX里,各种事件的处理都是setonXXX

	
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;


public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			BorderPane root = new BorderPane();//root根容器
			
			Button btn = new Button("登录");
			root.setCenter(btn);
			MyEventHandler handler = new MyEventHandler();
			btn.setOnAction(handler);
			
			Scene scene = new Scene(root,400,400);
			scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	//Alt + /  
	private class MyEventHandler implements EventHandler<ActionEvent>{

		@Override
		public void handle(ActionEvent arg0) {

			System.out.println("登录成功");
			
		}
		
		
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

 注:

·|   EventHandler 是一个接口 (泛型接口,带类型参数)

·|   导包的时候要 import   javafx.*   开头得的包


3.  设置处理器

    MyEventHandle  handle = new MyEventHandle();

    btn.setOnAction( handle );

可直接写成一行:

    btn.setOnAction(new  MyEventHandler());


4.使用匿名类

btn.setOnAction(new EventHandler<ActionEvent>() {

@Override
public void handle(ActionEvent event) {
// TODO 自动生成的方法存根
System.out.println("登录成功");
}

});


import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;


public class Main extends Application {
	@Override
	public void start(Stage primaryStage) {
		try {
			BorderPane root = new BorderPane();
//			
//			Label label = new Label("welcome!");
//			root.setCenter(label);
			Button btn = new Button("登录");
			root.setCenter(btn);
//			MyEventHandler handler = new MyEventHandler();
//			btn.setOnAction(handler);
			btn.setOnAction(new EventHandler<ActionEvent>() {

				@Override
				public void handle(ActionEvent event) {
					// TODO 自动生成的方法存根
					System.out.println("登录成功");
				}
				
			});
			
			Scene scene = new Scene(root,200,200);
			scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
			primaryStage.setScene(scene);
			primaryStage.show();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		launch(args);
	}
}

### JavaFX按钮事件处理示例 在 JavaFX 应用程序中,可以通过 `setOnAction` 方法来定义当用户点击按钮时触发的动作。下面是一个简单的例子,展示了如何设置按钮的点击事件处理器: ```java import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.StackPane; import javafx.stage.Stage; public class ButtonExample extends Application { @Override public void start(Stage primaryStage) { // 创建一个新的按钮实例 Button btn = new Button(); btn.setText("Click Me"); // 设置按钮被点击后的动作 btn.setOnAction(event -> System.out.println("Button was clicked!")); StackPane root = new StackPane(); root.getChildren().add(btn); Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("JavaFX Button Example"); primaryStage.setScene(scene); primaryStage.show(); } public static void main(String[] args) { launch(args); } } ``` 上述代码片段展示了一个完整的应用程序,在其中创建了一个名为 "Click Me" 的按钮,并为其设置了点击事件处理器[^4]。 对于更复杂的场景,比如结合动画效果(如淡入淡出过渡),可以在按钮点击事件发生时启动这些动画。例如,如果希望在一个圆形对象上实现淡入淡出的效果,则可以在按钮点击事件内编写相应的逻辑来控制这个过程[^1]。 另外一种方式是在FXML文件中配置按钮的行为。这通常涉及到在控制器类里定义一个方法用于响应特定组件上的事件,并且在这个组件对应的属性(这里是onAction)中指明该方法的名字[^2]。 #### 关于后台事件 值得注意的是,虽然这里讨论的主要集中在由用户直接引发的操作(如点击按钮),但在某些情况下也可能遇到不需要立即的人机互动就能发生的所谓“后台事件”。这类事件可能源于操作系统发出的通知、定时器超时或是其他类型的异步活动。不过,就本话题而言——即按钮事件处理来说,主要关注点还是在于前台用户的显式行为及其即时反馈机制[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值