1 /* 2 * Copyright (c) 2010, 2015, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package hello; 27 28 29 import javafx.application.Application; 30 import javafx.scene.Group; 31 import javafx.scene.Scene; 32 import javafx.scene.control.Button; 33 34 import javafx.stage.Stage; 35 36 public class HelloButton extends Application { 37 /** 38 * @param args the command line arguments 39 */ 40 public static void main(String[] args) { 41 Application.launch(args); 42 } 43 44 @Override public void start(Stage stage) { 45 stage.setTitle("Hello Button"); 46 Scene scene = new Scene(new Group(), 600, 450); 47 Button button1 = new Button(); 48 button1.setText("Click Me"); 49 button1.setLayoutX(25); 50 button1.setLayoutY(40); 51 52 button1.setOnAction(e -> System.out.println("Event: " + e)); 53 54 // // add new mappings 55 // // The J key should fire the button 56 // button1.getInputMap().getMappings().add(new KeyMapping(J, e -> button1.fire())); 57 // 58 // // The SPACE key should no longer fire the button (and instead just print text to console) 59 // button1.getInputMap().getMappings().add(new KeyMapping(SPACE, e -> { 60 // System.out.println("This should replace the default action event!"); 61 // })); 62 // 63 // // The degenerate case where we accept all input - a null KeyCombination matches anything 64 // // and results in firing the button 65 // button1.getInputMap().getMappings().add(new KeyMapping(new KeyBinding(KEY_PRESSED), e -> { 66 // System.out.println("catch-all mapping caught event: " + e); 67 // button1.fire(); 68 // })); 69 // 70 // 71 // // test one: lookup the J mapping and disable it 72 // button1.getInputMap().lookupMapping(new KeyBinding(J)).ifPresent(mapping -> { 73 // System.out.println("disabling J key mapping"); 74 // mapping.setDisabled(true); 75 // }); 76 // 77 // // test two: the degenerate case - we need to iterate through the mappings 78 // // to find the null keyCombination, so that we may install an interceptor 79 // // to block the tab key. This means all keys except tab will work. 80 //// button1.getInputMap().lookupMapping(new KeyBinding(KEY_TYPED)).ifPresent(mapping -> { 81 //// System.out.println("adding interceptor for Tab key mapping"); 82 //// mapping.getInterceptors().add(event -> { 83 //// if (! (event instanceof KeyEvent)) return true; 84 //// return KeyCode.TAB != ((KeyEvent)event).getCode(); 85 //// }); 86 //// }); 87 //// button1.getInputMap().getInterceptors().add(event -> { 88 //// if (! (event instanceof KeyEvent)) return true; 89 //// return KeyCode.X != ((KeyEvent)event).getCode(); 90 //// }); 91 // 92 // button1.getInputMap().getInterceptors().add(new KeyMappingInterceptor(new KeyBinding(SPACE))); 93 // 94 // // test three: remove a mapping 95 // button1.getInputMap().lookupMapping(new KeyBinding(J)).ifPresent(mapping -> { 96 // System.out.println("removing J key mapping"); 97 // button1.getInputMap().getMappings().remove(mapping); 98 // }); 99 // 100 // scene.getRoot().addEventHandler(KeyEvent.ANY, e -> System.out.println("e = " + e)); 101 102 103 ((Group)scene.getRoot()).getChildren().add(button1); 104 105 Button button2 = new Button(); 106 button2.setText("Click Me Too"); 107 button2.setLayoutX(25); 108 button2.layoutYProperty().bind(button1.heightProperty().add(button1.layoutYProperty())); 109 ((Group)scene.getRoot()).getChildren().add(button2); 110 // 111 // Button button3 = new Button(); 112 // button3.setText("Click Me Three"); 113 // button3.setLayoutX(25); 114 // button3.layoutYProperty().bind(button2.heightProperty().add(button2.layoutYProperty())); 115 // ((Group)scene.getRoot()).getChildren().add(button3); 116 117 stage.setScene(scene); 118 stage.show(); 119 } 120 }