как создать этот тип кнопки в javafx - PullRequest
0 голосов
/ 09 июня 2018

enter image description here

В javafx можно создать кнопку такого типа?Я попробовал splitmenubutton, но он касается кнопки со стрелкой.На этом рисунке кнопка содержит стрелку с текстом и изображение (а не только стрелку).

1 Ответ

0 голосов
/ 10 июня 2018

Вот пример использования MenuButton.Я нашел изображение опции и изображение стрелки вниз.

Код ключа

//Use a VBox to stack the different nodes
menuButton.setGraphic(new VBox(new StackPane(imageView), label, new StackPane(imageView2)));

*** Прикрепленный файл CSS удаляет стандартную стрелку вниз. ****

Полный код

import javafx.application.Application;
import javafx.geometry.Side;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuButton;
import javafx.scene.control.MenuItem;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
/**
 *
 * @author Sedrick
 */
public class JavaFXApplication9 extends Application {

    @Override
    public void start(Stage primaryStage) {

        MenuItem menuItem1 = new Menu("One");
        MenuItem menuItem2 = new Menu("Two");

        MenuButton menuButton = new MenuButton();
        ImageView imageView = new ImageView(new Image(getClass().getResourceAsStream("options.png")));
        imageView.setFitWidth(25);
        imageView.setFitHeight(25);
        ImageView imageView2 = new ImageView(new Image(getClass().getResourceAsStream("arrow.png")));
        imageView2.setFitWidth(25);
        imageView2.setFitHeight(15);
        Label label = new Label("Options");
        menuButton.setGraphic(new VBox(new StackPane(imageView), label, new StackPane(imageView2)));
        menuButton.getItems().addAll(menuItem1, menuItem2);
        menuButton.setPopupSide(Side.BOTTOM);

        StackPane root = new StackPane();        
        root.getChildren().add(menuButton);

        Scene scene = new Scene(root, 300, 250);
        scene.getStylesheets().add(getClass().getResource("myCss.css").toString());

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);

        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
}    

Файл CSS

Код от здесь .

.menu-button > .arrow-button {
    -fx-padding: 0;
}

.menu-button > .arrow-button > .arrow {
    -fx-padding: 0;
}

Результаты

enter image description here enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...