鍍金池/ 教程/ Java/ JavaFX單選按鈕
安裝e(fx)clipse到Eclipse (JavaFX工具)
JavaFX屬性
JavaFX文本域(輸入框)
JavaFX切換按鈕
JavaFX曲線
JavaFX教程
JavaFX菜單(Menu)
JavaFX快速入門
JavaFX復(fù)選框
JavaFX ScrollPane布局
JavaFX綁定
JavaFX顏色選擇器(ColorPicker)
JavaFX進(jìn)度指示器
JavaFX按鈕
JavaFX TitledPane布局
JavaFX圓弧
JavaFX開發(fā)環(huán)境安裝配置
在Eclipse安裝JavaFX Scene Builder
JavaFX路徑
JavaFX VBox
JavaFX線條
JavaFX漸變顏色
JavaFX集合
JavaFX BorderPane布局
JavaFX DatePicker
JavaFX單選按鈕
JavaFX滾動條
JavaFX矩形橢圓
JavaFX GridPane布局
JavaFX HBox
JavaFX進(jìn)度條
JavaFX多邊形折線
JavaFX超鏈接
JavaFX密碼字段
JavaFX Accordion布局
JavaFX概述和簡介
JavaFX選擇框
JavaFX文本
JavaFX顏色
JavaFX文件選擇器(FileChooser)
JavaFX標(biāo)簽
JavaFX FlowPane布局

JavaFX單選按鈕

單選按鈕通常組合在一起,以便用戶進(jìn)行單選,即用戶只能在單選按鈕列表中選擇一個項目。 例如,當(dāng)選擇鞋子尺寸時,我們通常從列表中選擇一個尺寸。

單選按鈕只能執(zhí)行:選擇取消選擇。

以下代碼顯示,當(dāng)放置在ToggleGroup中時,只能選擇一個RadioButton。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class Main extends Application {
  @Override
  public void start(Stage stage) {
    HBox root = new HBox();
    Scene scene = new Scene(root, 300, 150);
    stage.setScene(scene);
    stage.setTitle("");

    ToggleGroup group = new ToggleGroup();
    RadioButton button1 = new RadioButton("select first");
    button1.setToggleGroup(group);
    button1.setSelected(true);
    RadioButton button2 = new RadioButton("select second");
    button2.setToggleGroup(group);

    root.getChildren().add(button1);
    root.getChildren().add(button2);

    scene.setRoot(root);
    stage.show();
  }

  public static void main(String[] args) {
    launch(args);
  }
}

上面的代碼生成以下結(jié)果。

創(chuàng)建單選按鈕

javafx.scene.control包中的RadioButton類有兩個構(gòu)造函數(shù)。
要為其標(biāo)簽創(chuàng)建一個帶有空字符串的單選按鈕,然后再設(shè)置標(biāo)簽。

RadioButton rb = new RadioButton();
//setting a text label
rb.setText("Size 9");

要創(chuàng)建具有指定標(biāo)簽的單選按鈕。

RadioButton rb2 = new RadioButton("Size 9");

setSelected()方法帶有true參數(shù)可以顯式選擇單選按鈕。
isSelected()方法返回用戶是否選擇了特定單選按鈕。
setGraphic()方法可以為RadioButton安裝一個圖像。

Image image = new Image(getClass().getResourceAsStream("Size.jpg"));
RadioButton rb = new RadioButton("Size 9");
rb.setGraphic(new ImageView(image));

單選按鈕組

單選按鈕通常在組中使用。
我們可以添加單選按鈕到ToggleGroup對象,它將管理它們,使得一次只能選擇一個單選按鈕。

以下代碼創(chuàng)建一個切換組和三個單選按鈕,然后將每個單選按鈕添加到切換組,并指定應(yīng)選擇哪個按鈕。

ToggleGroup group = new ToggleGroup();

RadioButton rb1 = new RadioButton("Size 9");
rb1.setToggleGroup(group);
rb1.setSelected(true);

RadioButton rb2 = new RadioButton("Size 10");
rb2.setToggleGroup(group);

RadioButton rb3 = new RadioButton("Size 11");
rb3.setToggleGroup(group);

單選按鈕事件

我們通過ToggleGroup處理單選按鈕選擇的事件。更改偵聽器添加到ToggleGroup。為每個單選按鈕分配了用戶數(shù)據(jù)。
ChangeListener對象檢查組中的選定項目。 所選單選按鈕從getSelectedToggle方法返回。然后通過調(diào)用getUserData方法獲取用戶數(shù)據(jù)。

rb1.setUserData("Home")
rb2.setUserData("Calendar");
rb3.setUserData("Contacts");

final ToggleGroup group = new ToggleGroup();

group.selectedToggleProperty().addListener(
    (ObservableValue<? extends Toggle> ov, Toggle old_toggle, Toggle new_toggle) -> {
        if (group.getSelectedToggle() != null) {
            System.out.println(group.getSelectedToggle().getUserData().toString());
        }    
    }
});

完整的源代碼,如下所示 -

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.RadioButton;
import javafx.scene.control.Toggle;
import javafx.scene.control.ToggleGroup;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
// at W  W W.Y iI  bAI.C OM
public class Main extends Application {
  public static void main(String[] args) {
    launch(args);
  }

  @Override
  public void start(Stage stage) {
    Scene scene = new Scene(new Group());
    stage.setWidth(250);
    stage.setHeight(150);

    final ToggleGroup group = new ToggleGroup();

    RadioButton rb1 = new RadioButton("A");
    rb1.setToggleGroup(group);
    rb1.setUserData("A");

    RadioButton rb2 = new RadioButton("B");
    rb2.setToggleGroup(group);
    rb2.setUserData("B");

    RadioButton rb3 = new RadioButton("C");
    rb3.setToggleGroup(group);
    rb3.setUserData("C");

    group.selectedToggleProperty().addListener(new ChangeListener<Toggle>() {
      public void changed(ObservableValue<? extends Toggle> ov,
          Toggle old_toggle, Toggle new_toggle) {
        if (group.getSelectedToggle() != null) {
          System.out.println(group.getSelectedToggle().getUserData().toString());
        }
      }
    });

    HBox hbox = new HBox();
    VBox vbox = new VBox();

    vbox.getChildren().add(rb1);
    vbox.getChildren().add(rb2);
    vbox.getChildren().add(rb3);
    vbox.setSpacing(10);

    hbox.getChildren().add(vbox);
    hbox.setSpacing(50);
    hbox.setPadding(new Insets(20, 10, 10, 20));

    ((Group) scene.getRoot()).getChildren().add(hbox);
    stage.setScene(scene);
    stage.show();
  }
}

上面代碼執(zhí)行結(jié)果如下所示 -

單選按鈕焦點(diǎn)

在單選按鈕組中,默認(rèn)情況下第一個按鈕最初具有焦點(diǎn)。
當(dāng)使用setSelected方法選擇單選按鈕時,還應(yīng)該使用requestFocus函數(shù)將焦點(diǎn)更改為所選單選按鈕。

rb.setSelected(true);
rb.requestFocus();

上一篇:JavaFX概述和簡介下一篇:JavaFX圓弧