10.JavaFx AnchorPane

该代码示例展示了一个JavaFX应用程序,创建了两个Group和多个Button,使用AnchorPane进行布局管理。每个按钮的位置通过AnchorPane的setLeftAnchor和setTopAnchor方法设置,同时展示了如何给AnchorPane添加鼠标点击事件监听器。

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

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;

/**
 * AnchorPane
 */
public class Demo11 extends Application {

    @Override
    public void start(Stage stage) throws Exception {
        Button button1 = new Button("按钮1");
        Button button2 = new Button("按钮2");

        // 布局
        AnchorPane anchorPane = new AnchorPane();
        anchorPane.setStyle("-fx-background-color: RED");
        anchorPane.setOnMouseClicked(new EventHandler<MouseEvent>() {
            @Override
            public void handle(MouseEvent event) {
                System.out.println("pane single click");
            }
        });
//        AnchorPane.setLeftAnchor(button1, 10.0);
//        AnchorPane.setTopAnchor(button1, 10.0);
//
//        AnchorPane.setLeftAnchor(button2, 60.0);
//        AnchorPane.setTopAnchor(button2, 10.0);
//        anchorPane.getChildren().addAll(button1, button2);

        Button groupButton1 = new Button("group按钮1");
        Button groupButton2 = new Button("group按钮2");
        Button groupButton3 = new Button("group按钮3");
        Button groupButton4 = new Button("group按钮4");

        Group group1 = new Group();
        Group group2 = new Group();
        group1.getChildren().addAll(groupButton1, groupButton2);
        group2.getChildren().addAll(groupButton3, groupButton4);

        anchorPane.getChildren().addAll(group1, group2);
        AnchorPane.setLeftAnchor(group1, 10.0);
        AnchorPane.setTopAnchor(group1, 10.0);

        AnchorPane.setLeftAnchor(group2, 500.0);
        AnchorPane.setTopAnchor(group2, 10.0);

        groupButton1.setLayoutX(0);
        groupButton1.setLayoutY(100);

        groupButton2.setLayoutX(0);
        groupButton2.setLayoutY(200);

        groupButton3.setLayoutX(0);
        groupButton3.setLayoutY(300);

        groupButton4.setLayoutX(0);
        groupButton4.setLayoutY(400);


        Scene scene = new Scene(anchorPane);
        stage.setScene(scene);
        stage.setTitle("javafx");
        stage.setWidth(800);
        stage.setHeight(800);
        stage.show();
    }
}
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.*; import javafx.scene.layout.AnchorPane; import javafx.scene.text.Font; import javafx.stage.*; import javafx.scene.control.*; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { Button b1=new Button("账号登录"); b1.setPrefWidth(100); b1.setPrefHeight(20); b1.setStyle( "-fx-background-color: #B22222;"+ "-fx-text-fill: #FFFAFA;" ); Label label=new Label("账号 :"); Label label2=new Label("密码 :"); label.setFont(Font.font(13)); label2.setFont(Font.font(13)); TextField textField1=new TextField(); textField1.setPrefHeight(25); textField1.setPrefWidth(200); textField1.setFont(Font.font(12)); Tooltip tip=new Tooltip("请输入12位学号"); textField1.setPromptText("请输入12位学号"); tip.setFont(Font.font(10)); textField1.setTooltip(tip); PasswordField passwordField=new PasswordField(); passwordField.setPrefHeight(25); passwordField.setPrefWidth(200); Tooltip tooltip2=new Tooltip("请输入八位密码"); passwordField.setPromptText("请输入八位密码"); textField1.textProperty().addListener((new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (newValue.length()>12){ textField1.setText(oldValue); } } })); passwordField.textProperty().addListener((new ChangeListener<String>() { @Override public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) { if (newValue.length()>8){ passwordField.setText(oldValue); } } })); /*ImageView img = new ImageView(); Image image=new Image(getClass().getResourceAsStream("/image/iocn.jpg")); img.setImage(image);*/ passwordField.setTooltip(tooltip2); AnchorPane anchorPane=new AnchorPane(textField1); anchorPane.getChildren().add(passwordField); anchorPane.getChildren().add(b1); anchorPane.getChildren().addAll(label2,label); anchorPane.setTopAnchor(label,150.0); anchorPane.setLeftAnchor(label,140.0); anchorPane.setTopAnchor(label2,180.0); anchorPane.setLeftAnchor(label2,140.0); anchorPane.setTopAnchor(textField1,150.0); anchorPane.setLeftAnchor(textField1,180.0); anchorPane.setTopAnchor(passwordField,180.0); anchorPane.setLeftAnchor(passwordField,180.0); anchorPane.setTopAnchor(b1,220.0); anchorPane.setLeftAnchor(b1,220.0); Scene scene=new Scene(anchorPane); primaryStage.setHeight(500); primaryStage.setWidth(550); primaryStage.setScene(scene); primaryStage.show(); } }
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值