【发布时间】:2015-11-28 12:44:58
【问题描述】:
我正在开发一个使用 javafx 多种输入类型的 java 项目。但由于我使用 标签上带有图像(ImageView)。
1- 组合框看起来是白色!但我需要它是黑色的。
2- 每次我选择一个项目。
3- 它消失了!!!
这是我的代码:
...
import javafx.scene.control.ComboBox;
import javafx.scene.image.ImageView;
ImageView img_tun = new ImageView("images/icones/flag/Tunisia.png");
Label lbl_tun=new Label("1",img_tun);
ImageView img_fr = new ImageView("images/icones/flag/France.png");
Label lbl_fr=new Label("2",img_fr);
ImageView img_aut = new ImageView("images/icones/flag/World.png");
Label lbl_aut=new Label("3",img_aut);
optionsnat=FXCollections.observableArrayList(lbl_tun,lbl_fr,lbl_aut);
@FXML
ComboBox<Label> cb_nat = new ComboBox<Label>();
private String nat="1";
...
@Override
public void initialize(URL location, ResourceBundle resources) {
...
cb_nat.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number number, Number number2) {
if(cb_nb.getItems().get((Integer) number2)=="1"){setNat("1");}
else if(cb_nb.getItems().get((Integer) number2)=="2"){setNat("2");}
else if(cb_nb.getItems().get((Integer) number2)=="3"){setNat("3");}
else{System.err.println("Erreur lors de changement de nation..");}
}
});
}
...
和code.fxml
<ComboBox fx:id="cb_nat" layoutX="40.0" layoutY="265.0" prefWidth="150.0" />
编辑:
阅读此Article 后,我知道我的方法是完全错误的,强烈不推荐..如果有人有其他想法将 bnation 标志放在 ComboBox 中,请帮助!!
谢谢..(对不起我的英语不好)
【问题讨论】:
-
我认为显示的代码不够多。例如,setNat 函数。而且,为什么要将整数与字符串进行比较?不过你的问题很奇怪
-
setNat()是private String nat的设置器。但关于比较我采用这种方法,因为它来自互联网(怪我:p)如果有另一种可能性做同样的事情启发我:(我是一个初学者..(对不起我的英语) -
尝试删除
= new ComboBox<Label>()。您不需要创建 ComboBox -
这种确切的情况在documentation 中的“关于将节点插入组合框项目列表的警告”下得到解决。最重要的是,您不应该使用
Node类型作为ComboBox的 data 类型。 -
感谢@James_D,这是我的错,我之前应该读过 :( 但我怎么能以另一种方式做到这一点?
标签: java javafx combobox imageview scenebuilder