JavaFX:具有图像和文本的ChoiceBox
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了JavaFX:具有图像和文本的ChoiceBox,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1717字,纯文字阅读大概需要3分钟。
内容图文
![JavaFX:具有图像和文本的ChoiceBox](/upload/InfoBanner/zyjiaocheng/682/aa8dcb8e8c7247e09c20d2471e7964fd.jpg)
我想用JavaFX ChoiceBox创建一个下拉菜单,其中每个条目都包含一个不同的图标,旁边是一个短文本. (例如,在语言选择器中,左侧有一个小标志,右侧有该语言的名称.)
做这个的最好方式是什么?
我试图通过CSS做到这一点.以下内容几乎可以使用,但是当然它将为所有条目设置相同的图标:
#accChoiceBox .menu-item .label {
-fx-padding: 0 0 0 30px;
-fx-background-size: 20px 20px;
-fx-background-repeat: no-repeat;
-fx-background-image: url("../resources/images/icon.png");
}
所以我想我可以通过#accChoiceBox .menu-item:nth-??of-type(1).label或类似名称给每个条目一个自己的图标,但是我尝试过的选择器都没有.
解决方法:
好的,只需使用ComboBox而不是ChoiceBox即可解决问题(谢谢James_D).网上有很多有关ComboBoxes中图像的示例和解决方案.无论如何,我也会在这里留下我自己的.
它将仅在ComboBox icon_1.png中提供第一个条目,在第二个icon_2.png中提供第一个条目,依此类推.
comboBox.setCellFactory(new Callback<ListView<String>, ListCell<String>>() {
@Override
public ListCell<String> call(ListView<String> p) {
return new ListCell<String>() {
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
setText(item);
if (item == null || empty) {
setGraphic(null);
} else {
Image icon;
try {
int iconNumber = this.getIndex() + 1;
String iconPath = "MyProject/resources/images/icon_" + iconNumber + ".png";
icon = new Image(getClass().getClassLoader().getResourceAsStream(iconPath));
} catch(NullPointerException ex) {
// in case the above image doesn't exist, use a default one
String iconPath = "MyProject/resources/images/icon_na.png";
icon = new Image(getClass().getClassLoader().getResourceAsStream(iconPath));
}
ImageView iconImageView = new ImageView(icon);
iconImageView.setFitHeight(30);
iconImageView.setPreserveRatio(true);
setGraphic(iconImageView);
}
}
};
}
});
内容总结
以上是互联网集市为您收集整理的JavaFX:具有图像和文本的ChoiceBox全部内容,希望文章能够帮你解决JavaFX:具有图像和文本的ChoiceBox所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。