Jas*_*ver 1 java javafx javafx-2 fxml javafx-8
我正在尝试MenuButton使用JavaFX而不是通过代码修改箭头的颜色CSS。
我在里面找到它caspian.css:
.menu-button > .arrow-button > .arrow {
-fx-background-insets: 1 0 -1 0, 0;
-fx-background-color: -fx-mark-highlight-color, -fx-mark-color;
-fx-padding: 0.25em; /* 3 */
-fx-shape: "M 0 -3.5 v 7 l 4 -3.5 z";
}
Run Code Online (Sandbox Code Playgroud)
我试图使用类似的东西:
menubutton.lookup(".arrow");
Run Code Online (Sandbox Code Playgroud)
但它抛出 NullPointerException
当我这样做时:
System.out.println(this.getStyleClass().toString());
它仅表明:menu-button仅。
所以任何人都可以给我一种无需使用CSS即可使用Java对其进行修改的方法吗?
这有效:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class RedMenuButton extends Application {
@Override
public void start(Stage primaryStage) {
final StackPane root = new StackPane();
final MenuButton menuButton = new MenuButton("Menu");
menuButton.getItems().addAll(new MenuItem("Item 1"), new MenuItem("Item 2"), new MenuItem("Item 3"));
root.getChildren().add(menuButton);
final Scene scene = new Scene(root, 250, 150);
primaryStage.setScene(scene);
primaryStage.show();
menuButton.lookup(".arrow").setStyle("-fx-background-color: red;");
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
更新:但这是一个更好的解决方案(如果不节省夏令时,我可能会是第一次;)。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class RedMenuButton extends Application {
@Override
public void start(Stage primaryStage) {
final StackPane root = new StackPane();
final MenuButton menuButton = new MenuButton("Menu");
menuButton.getItems().addAll(new MenuItem("Item 1"), new MenuItem("Item 2"), new MenuItem("Item 3"));
root.getChildren().add(menuButton);
menuButton.setStyle("-fx-mark-color: red");
final Scene scene = new Scene(root, 250, 150);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2999 次 |
| 最近记录: |