• Group容器的使用与点击事件javafx


    Group容器的使用与点击事件

    讲解group容器,添加和移除子组件的方式,子组件设置位置等

    创建普通的三个button,如果不设置布局位置默认在位置上显示最后一个

      @Override
        public void start(Stage primaryStage) throws Exception{
            Button b1 = new Button("b1");
            Button b2 = new Button("b2");
            Button b3 = new Button("b3");
            b1.setLayoutX(0);
            b2.setLayoutX(200);
            b3.setLayoutX(400);
            Group group = new Group();
            group.getChildren().addAll(b1,b2,b3);
            Scene scene = new Scene(group);
            primaryStage.setScene(scene);
            primaryStage.setTitle("test");
            primaryStage.setWidth(600);
            primaryStage.setHeight(500);
            primaryStage.show();
    
        }
    

    Children有一些对元素的增删改查的操作,查到的是node

    group.getChildren()
    

    给分组下的组件设置透明状态

      group.setOpacity(0.5);
    

    判断是否存在,只会判断头的位置(左上角)

    (group.contains(0,0)
    

    给子节点增加监听

          group.getChildren().addListener(new InvalidationListener() {
                @Override
                public void invalidated(Observable observable) {
                    System.out.println(observable);
                }
            });
    

    按钮的单击事件

     b1.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("---------------");
                }
            });
    

    group组的改变事件

         group.getChildren().addListener(new ListChangeListener<Node>() {
                 @Override
                 public void onChanged(Change<? extends Node> c) {
                     System.out.println(""+c.getList().size());
                 }
             });
    

    设置字体的文本和格式,如果过大会撑开

          b1.setText("这是字体");
            b1.setFont(Font.font("sans-serif",18));
    

    设置背景颜色

          BackgroundFill black = new BackgroundFill(Paint.valueOf("#809c05"),new CornerRadii(20),new Insets(10));
            Background background = new Background(black);
            b1.setBackground(background);
    

    设置圆角

      BackgroundFill black = new BackgroundFill(Paint.valueOf("#809c05"),new CornerRadii(20),Insets.EMPTY);
            Background background = new Background(black);
            b1.setBackground(background);
            BorderStroke borderStroke = new BorderStroke(Paint.valueOf("#809c05"),BorderStrokeStyle.DOTTED,new CornerRadii(20),new BorderWidths(2));
            Border border = new Border(borderStroke);
            b1.setBorder(border);
    

    设置字体颜色

    b1.setTextFill(Paint.valueOf("FF66FF"));
    

    备注:Paint.valueOf("FF66FF55") 前面代表颜色,后面55代表透明度

    通过css的方式设置背景颜色等

     b1.setStyle("-fx-background-color:CCCC00");
    
            b1.setStyle("-fx-background-color:CCCC00"+";-fx-background-radius:20");
    
    

    单机事件可以获取源头

    //单击事件
            b1.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    Button button   = (Button) event.getSource();
    
                    System.out.println(button.getText());
                }
            });
    

    点击事件

    双击事件可以根据getClickCount次数为2进行判定,点击事件不管左边还是 右边需要辨别一下。

         b1.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() {
                @Override
                public void handle(MouseEvent event) {
                    System.out.println("--》"+event.getButton().name());
                    System.out.println(event.getClickCount());
                }
            });
    
    PRIMARY 左鼠标
    SECONDARY 右鼠标
    MIDDLE 滑轮
    
    MouseEvent有
    ANY  -- 所有鼠标事件类型的通用超类型。
    MOUSE_PRESSED --当按下鼠标按钮时发生此事件。这激活一个按下-拖动-释放手势,因此所有后续的鼠标事件直到 释放按钮被交付到相同的节点。
    MOUSE_RELEASED  --当释放鼠标按钮时发生此事件。这是交付指向被激活的按钮所在的节点 按-拖-放手势。
    
    MOUSE_CLICKED  --此事件发生时鼠标按钮已被点击(按下和
    *在同一个节点上释放)。这个事件提供了一个类似按钮的行为
    *到任何节点。请注意,即使是长时间的拖动也可以生成单击事件
    *被传递到鼠标同时在其上的最顶层节点
    *按下并释放)。
    
    MOUSE_ENTERED_TARGET -- 当鼠标进入节点时发生此事件。这是冒泡的变体,
    *也会被传递给所输入节点的所有父节点(除非它
    *消费)。当通知鼠标进入一些节点
    *不需要子事件,{@code MOUSE_ENTERED}事件处理程序应该
    *被使用。
    
    MOUSE_ENTERED --当鼠标进入节点时发生此事件。下发事件类型
    *仅对输入的节点,如果父节点想要过滤或获取
    *冒泡事件,他们需要使用{@code MOUSE_ENTERED_TARGET}。
    
    MOUSE_EXITED_TARGET -- 当鼠标退出节点时发生此事件。 这是冒泡的变体,  *也会被传递给退出节点的所有父节点(除非它  *消费)。 当通知鼠标退出一些节点时  *不需要子事件,{@code MOUSE_EXITED}事件处理程序应该  *被使用。
    MOUSE_EXITED  -- 当鼠标退出节点时发生此事件。 下发事件类型  
    *仅对退出的节点,如果父节点想要过滤它或获取  
    *冒泡事件,他们需要使用{@code MOUSE_EXITED_TARGET}。  
    
    MOUSE_MOVED --- 当鼠标在节点内移动而没有按钮时,将发生此事件  按下。 如果按下任何鼠标按钮,则MOUSE_DRAGGED事件  发生。  
    MOUSE_DRAGGED -- 当鼠标随按下的按钮移动时发生此事件。  
    *它被交付到按钮被按下的同一节点  
    *激活按-拖-放手势。 这是交付  
    *不管鼠标是否在节点的范围内。  
    
    DRAG_DETECTED -- 当鼠标退出节点时发生此事件。 这是冒泡的变体,  *也会被传递给退出节点的所有父节点(除非它  *消费)。 当通知鼠标退出一些节点时  *不需要子事件,{@code MOUSE_EXITED}事件处理程序应该  *被使用。
    

    键盘按下取消事件

      b1.setOnKeyPressed(new EventHandler<KeyEvent>() {
                @Override
                public void handle(KeyEvent event) {
                    System.out.println("按下..");
                }
            });
            b1.setOnKeyReleased(new EventHandler<KeyEvent>() {
                @Override
                public void handle(KeyEvent event) {
                    System.out.println("抬起...");
                }
            });
    

    获取按键的名称

      System.out.println("按下Text.."+event.getText());//小写
                    System.out.println("按下Name.."+event.getCode().getName());//大写
    

    设置快捷键

    1.常用
    
    
           //ctrl+ALT+c
            KeyCodeCombination kc1 = new KeyCodeCombination(KeyCode.C, KeyCombination.ALT_DOWN, KeyCombination.CONTROL_DOWN);
            Mnemonic mnemonic = new Mnemonic(b1, kc1);
            scene.addMnemonic(mnemonic);
            
         2.   
            
            KeyCharacterCombination o = new KeyCharacterCombination("o", KeyCombination.ALT_DOWN);
            Mnemonic mnemonic = new Mnemonic(b1, o);
            scene.addMnemonic(mnemonic);
    
            
            
            
            KeyCodeCombination combination = new KeyCodeCombination(KeyCode.Y, KeyCombination.ALT_DOWN);
            //alt+y
          scene.getAccelerators().put(combination, new Runnable() {
    
                @Override
                public void run() {
                    b1.fire();//这个会调用你的监听方法,回调
                    System.out.println("自己的方法");
    
                }
            });
            
    
    //点击事件的方法
             b1.setOnAction(new EventHandler<ActionEvent>() {
                @Override
                public void handle(ActionEvent event) {
                    System.out.println("点击了按钮");
                }
            });
    
  • 相关阅读:
    js 函数定义的方式
    JS闭包的理解及常见应用场景
    requireJS的基本使用
    Zepto.js简介
    石川es6课程---1-2、ES6简介
    黑马lavarel教程---8、session
    Git使用操作指南和GitHub
    构建自己的Java并发模型框架
    对象的创建和存在时间(持续更新)
    iOS 通过HEX(十六进制)得到一个UIColor的对象
  • 原文地址:https://www.cnblogs.com/q1359720840/p/16321578.html
Copyright © 2020-2023  润新知