package javafxui;
import javafx.scene.Scene;
import javafx.scene.control.ToggleButton;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Label;
import javafx.scene.control.Toggle;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
//import javafx.scene.control.Button;
import java.awt.Button;
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.stage.Stage;
/*
* 两个或以上的Toggle Button可以组合在一个Group中,同时只有一个Toggle Button可以被选中
* 或者都无需选中。图5-1是在一个Group中组合了三个Toggle Button的应用程序屏幕截图。应用程序会根据选
* 中的Toggle
*
* javafx.beans.value.ObservableValue;
* javafx.scene.control.ToggleButton;
javafx.scene.control.ToggleGroup;
javafx.scene.control.Toggle;
*
*/
public class LearnToggleButton extends Application{
@Override
public void start(Stage stage) {
Pane pane = new Pane();
HBox hBox = new HBox();
Image image = new Image("res/timg.jpg");
/*@1
* 创建Toggle Button
* 你在你的代码中定义了多个Toggle Button,你可以将它们组合到一个Group中
* ToggleButton类是Labeled类的扩展,所以你可以为其指定一个文本标题、一个图像,或者同时指定二者
*/
ToggleButton tb1 = new ToggleButton("Minor");
ToggleButton tb2 = new ToggleButton("Major");
ToggleButton tb3 = new ToggleButton ("Press me", new ImageView(image));
ToggleButton tb4 = new ToggleButton("Critical");
/*@2
* 添加Toggle Button到Group
*
*
*
*
*/
final ToggleGroup group = new ToggleGroup();
tb1.setToggleGroup(group);
tb1.setSelected(true);
tb2.setToggleGroup(group);
tb4.setToggleGroup(group);
/*@3
* 设置行为
*
*
*
*/
tb1.setUserData(Color.LIGHTGREEN);
tb2.setUserData(Color.LIGHTBLUE);
tb3.setUserData(Color.SALMON);
Rectangle rect = new Rectangle(20,30);
rect.setHeight(50);
rect.setFill(Color.RED);
rect.setStroke(Color.DARKGRAY);
rect.setStrokeWidth(2);
rect.setArcHeight(10);
rect.setArcWidth(10);
Circle circle = new Circle(20);
circle.setFill(Color.RED);
group.selectedToggleProperty().addListener(
(ObservableValue<? extends Toggle> ov,
Toggle toggle, Toggle new_toggle) -> {
if (new_toggle == null) {
rect.setFill(Color.WHITE);
}
else
rect.setFill((Color) group.getSelectedToggle().getUserData());
});
rect.setWidth(hBox.getWidth());
hBox.getChildren().addAll(tb1,tb2,tb3,rect);
Scene scene = new Scene(hBox);
/*@4
* 使用css
*
*/
scene.getStylesheets().add("javafxui/learn.css");
tb1.getStyleClass().add("toggle-button1");
tb2.getStyleClass().add("toggle-button2");
tb3.getStyleClass().add("toggle-button3");
stage.setScene(scene);
stage.setTitle("LearnUI");
stage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
UI控件 -> ToggleButton
最新推荐文章于 2021-03-22 00:56:17 发布