在javafx
我可以创建此类型的按钮?我试过,splitmenubutton
但它包含带箭头的按钮。在这张图片中,按钮包含一个带有文本和图像的箭头(不仅仅是箭头)。
这是一个使用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;
}
结果
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句