JavaFX 按钮详细解释 尺寸 坐标 填充 描边 描边粗细 css 单机事件

package fx.com;

import javafx.application.Application;
import javafx.application.ConditionalFeature;
import javafx.application.HostServices;
import javafx.application.Platform;
import javafx.collections.ListChangeListener;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.JavaFXBuilderFactory;
import javafx.geometry.Insets;
import javafx.geometry.Rectangle2D;
import javafx.scene.Cursor;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.stage.Screen;
import javafx.stage.Stage;
import sun.net.www.content.image.png;

import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

public class Main extends Application {
    public static void main(String[] args) {
        launch(Main.class, args);
    }

    @Override
    public void start(Stage primaryStage) throws IOException, InterruptedException {

        Button button1 = new Button("这是按钮");

        button1.setLayoutX(10);
        button1.setLayoutY(10);
        button1.setPrefWidth(200);
        button1.setPrefHeight(100);
        button1.setFont(Font.font(20));

        button1.setTextFill(Color.YELLOW);

        //设置填充颜色 与圆角与 周围的白边
        BackgroundFill backgroundFill = new BackgroundFill(Color.RED, new CornerRadii(10), new Insets(25));
        Background background = new Background(backgroundFill);
        button1.setBackground(background);

        //设置描边颜色 粗细 描边类型 实线 虚线
        BorderStroke borderStroke = new BorderStroke(Color.GREEN, BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(10, 10, 10, 10));
        Border border = new Border(borderStroke);
        button1.setBorder(border);

        Button button2 = new Button("这是按钮");

        button2.setLayoutX(250);
        button2.setLayoutY(10);
        button2.setPrefWidth(200);
        button2.setPrefHeight(50);
        button2.setFont(Font.font(20));
        button2.setStyle(
                "-fx-background-color: #7ccd7c;" +
                        "-fx-background-radius: 10;" +
                        "-fx-text-fill:#5cacee"
        );


        Group group = new Group();
        //添加组件到 group
        group.getChildren().addAll(button1, button2);

        //给button1 添加一个点击事件
        button1.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("按钮单机事件");

            }
        });
        //给button1 添加一个点击事件
        button2.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                Button source = (Button)event.getSource();                
                System.out.println("这是Button2的文本:"+source.getText());
            }
        });


        Scene scene = new Scene(group);
        primaryStage.setScene(scene);
        URL qunlogoUrl = new URL("http://www.haotuo.net.cn/Resources/cq/qunlogo.png");
        primaryStage.setWidth(800);
        primaryStage.setHeight(500);
        primaryStage.getIcons().add(new Image(qunlogoUrl.toExternalForm()));
        primaryStage.setTitle("JavaFX");
        primaryStage.show();


    }
}

 

### 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]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值