菜单打开时的菜单按钮样式 JavaFX
Menu button style while menu open JavaFX
我想知道是否可以在菜单按钮的菜单当前打开时为该菜单按钮设置某种样式(例如背景颜色为黑色)。也就是说,如果菜单没有打开,那么它不应该有黑色背景颜色。我可以在 CSS 文件中执行此操作吗?甚至可能吗?
我知道菜单按钮有一个方法 showing
指示我菜单是否打开,但我不知道应用它,以便在菜单打开时按钮颜色发生变化。
这是菜单按钮:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/MenuButton.html
我正在使用 JavaFX 和我正在使用的样式 CSS。
documentation 表示 MenuButton
有一个 showing
伪类,它是在显示上下文菜单时设置的,所以你可以做
.menu-button:showing {
-fx-base: black ;
}
这是一个快速测试工具:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
MenuButton button = new MenuButton("Test");
button.getItems().addAll(
new MenuItem("Item 1"),
new MenuItem("Item 2")
);
BorderPane root = new BorderPane();
root.setTop(button);
Scene scene = new Scene(root, 200, 200);
scene.getStylesheets().add(getClass().getResource("/style.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我从中得到以下信息:
和
我想知道是否可以在菜单按钮的菜单当前打开时为该菜单按钮设置某种样式(例如背景颜色为黑色)。也就是说,如果菜单没有打开,那么它不应该有黑色背景颜色。我可以在 CSS 文件中执行此操作吗?甚至可能吗?
我知道菜单按钮有一个方法 showing
指示我菜单是否打开,但我不知道应用它,以便在菜单打开时按钮颜色发生变化。
这是菜单按钮:https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/MenuButton.html
我正在使用 JavaFX 和我正在使用的样式 CSS。
documentation 表示 MenuButton
有一个 showing
伪类,它是在显示上下文菜单时设置的,所以你可以做
.menu-button:showing {
-fx-base: black ;
}
这是一个快速测试工具:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;
public class App extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
MenuButton button = new MenuButton("Test");
button.getItems().addAll(
new MenuItem("Item 1"),
new MenuItem("Item 2")
);
BorderPane root = new BorderPane();
root.setTop(button);
Scene scene = new Scene(root, 200, 200);
scene.getStylesheets().add(getClass().getResource("/style.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
我从中得到以下信息:
和