Button有三種基本形式,分別爲:java
空按鈕spa
帶文字的按鈕code
帶圖片及文字的按鈕繼承
能夠看到Button的三種基本形式跟Label的很是類似,事實上,Button就是間接繼承自Label的父類Labeled的,因此能夠簡單的把Button看作一個天生能處理鼠標點擊事件的Label。事件
Button button1 = new Button();
Button button2 = new Button("Accept");
Image imageOk = new Image(getClass().getResourceAsStream("ok.png")); Button button3 = new Button("Accept", new ImageView(imageOk));
改變圖標與文字的相對位置同樣是經過setContentDisplay()方法來完成。圖片
因爲Button繼承自Labeled,因此改變成分的方式也與以前看到的Label相同。ci
The setText(String text) – 指定文字
get
setGraphic(Node graphic)– 指定圖標
it
Image imageDecline = new Image(getClass().getResourceAsStream("not.png")); Button button5 = new Button(); button5.setGraphic(new ImageView(imageDecline));
圖標沒必要須是一個外部圖片文件,還能夠是圖形元素,好比說添加一個圓形(javafx.scene.shape.circle.Circle)io
Button button = new Button(); button.setGraphic(new Circle(20)); //半徑爲20像素的圓形,默認填充顏色爲黑色
效果:
很是的醜。ok,接下來看如何爲按鈕綁定點擊動做。
當鼠標點擊按鈕時,按鈕內部會產生一個事件,經過setOnAction()能夠設置在單擊事件產生後要作的事情:
button2.setOnAction((ActionEvent e) -> { label.setText("Accepted"); });
若是要讓按鈕能夠監聽處理其餘事件,除了使用上一篇文章介紹的setOn...方法,還可使用一樣定義在Node類中的addEventHandler(final EventType<T> eventType,
final EventHandler<? super T> eventHandler)方法,這個方法容許綁定任何繼承自javafx.event.Event類的事件,這意味着咱們能夠監聽處理自定義事件。此方法的第一個參數指定事件類型,如按下鍵盤上某一個鍵的事件類型爲KeyEvent.KEY_PRESSED;第二個參數指定事件處理動做。【應用視覺效果】小節有處理鼠標移入移出事件的例子可供參考。
能夠爲按鈕應用各類視覺效果,常見的效果有陰影,光照等等。下面看一個當鼠標移入範圍時產生一圈陰影的例子:
DropShadow shadow = new DropShadow(); //Adding the shadow when the mouse cursor is on button.addEventHandler(MouseEvent.MOUSE_ENTERED, (MouseEvent e) -> { button.setEffect(shadow); }); //Removing the shadow when the mouse cursor is off button.addEventHandler(MouseEvent.MOUSE_EXITED, (MouseEvent e) -> { button.setEffect(null); });
效果: