teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

質問文に合わせる形で修正

2018/03/22 21:25

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -58,4 +58,60 @@
58
58
  0. [JavaFX: JavaFX UIコンポーネントの操作 5 トグル・ボタン](https://docs.oracle.com/javase/jp/8/javafx/user-interface-tutorial/toggle-button.htm)
59
59
  0. [javafx.scene.control.ToggleButton](https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/control/ToggleButton.html)
60
60
  0. [JavaFX ToggleButton set color and restore default color
61
- ](https://stackoverflow.com/questions/37693835/javafx-togglebutton-set-color-and-restore-default-color)
61
+ ](https://stackoverflow.com/questions/37693835/javafx-togglebutton-set-color-and-restore-default-color)
62
+
63
+ ---
64
+ 2018/03/23追加
65
+
66
+ > ボタンが押されてボタンの背景色が変わり、もう一度ボタンが押されたら「色を直接指定せず元の状態の色(デフォルトの色)に戻す
67
+
68
+ トグルボタンなら以下のソースコードで可能です。
69
+ 他のボタンに関しては知らないです、選択状態の疑似CSSクラスがあるかはお手数ですが、参考情報にCSSリファレンス・ガイドを記載しましたので、調査してくださいな。
70
+
71
+ ```Java
72
+ import javafx.application.Application;
73
+ import javafx.stage.Stage;
74
+
75
+ import javafx.scene.Scene;
76
+ import javafx.scene.control.ToggleButton;
77
+ import javafx.scene.layout.VBox;
78
+ import javafx.geometry.Pos;
79
+
80
+ public class A118646 extends Application {
81
+
82
+ @Override
83
+ public void start(Stage stage) throws Exception {
84
+
85
+ ToggleButton favoriteButton = new ToggleButton("お気に入り");
86
+ VBox layout = new VBox(10);
87
+ layout.setAlignment(Pos.CENTER);
88
+ layout.getChildren().setAll(favoriteButton);
89
+ layout.getStylesheets().add(getClass().getResource("colored-toggle.css").toExternalForm());
90
+
91
+ stage.setTitle("JavaFX");
92
+ stage.setResizable(false);
93
+ stage.setScene(new Scene(layout, 400, 300));
94
+ stage.show();
95
+ }
96
+
97
+ public static void main(String[] args) {
98
+
99
+ launch(args);
100
+ }
101
+
102
+ }
103
+
104
+ ```
105
+
106
+ colored-toggle.css
107
+
108
+ ```css
109
+ .toggle-button:selected {
110
+ -fx-background-color:#f4f162
111
+ }
112
+ ```
113
+
114
+ ■参考情報
115
+ 0. [JavaFX CSSリファレンス・ガイド togglebutton](https://docs.oracle.com/javase/jp/8/javafx/api/javafx/scene/doc-files/cssref.html#togglebutton)
116
+ 0. [How to make a button appear to have been clicked or selected? (JavaFX2)
117
+ ](https://stackoverflow.com/questions/15819242/how-to-make-a-button-appear-to-have-been-clicked-or-selected-javafx2)

1

追記

2018/03/22 21:25

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -22,6 +22,8 @@
22
22
  public void start(Stage stage) throws Exception {
23
23
 
24
24
  ToggleButton favoriteButton = new ToggleButton("お気に入り");
25
+ // デフォルトの背景色を変更したい時は初期設定も以下の初期設定も忘れずに。
26
+ // favoriteButton.setStyle("-fx-base: #f2f2f2");
25
27
  favoriteButton.setOnAction(event -> {
26
28
  this.favoriteOnAction(event);
27
29
  });