使用Button(按鈕)

建立按鈕

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);
});

效果:

相關文章
相關標籤/搜索