javafx2 で fxml ファイルを作成します。
Person オブジェクトのリストがあります。このリストの名前は ですEntries
。ObservableList がありmyObservableList
ます。この中にラベルを入れたい。各ラベルには、人物の画像と名前のテキストのペアが含まれている必要があります。私はこのコードを書きます:
for (int i=0; i<numberOfEntries; i++){
currentEntry = Entries.get(i);
name=currentEntry.getName();
image1 = new Image("file:"+currentEntry.getIcon());
imageView1= new ImageView();
imageView1.setFitHeight(50);
imageView1.setFitWidth(70);
imageView1.setImage(image1);
label = new Label(name, imageView1);
label.setFont(new Font("serif", 32));
myObservableList.add(label);
}
問題なく動作しますが、イメージを数回挿入した後、JVM から次のエラー メッセージが表示されます。
Caused by: java.lang.OutOfMemoryError: Java heap space.
このエラーはコード行から発生します image1 = new Image("file:"+currentEntry.getIcon());
最後に、myObservableList のすべての要素を ComboBox アイテムに入れたいと思います。このため、Java コントローラーの Initialize メソッドで次のように記述します。
myComboBox.setItems(myObservableList);
ListCell<Label> buttonCell = new ListCell<Label>() {
@Override protected void updateItem(Label item, boolean isEmpty) {
super.updateItem(item, isEmpty);
setText(item==null ? "" : item.getText());
}
};
myComboBox.setButtonCell(buttonCell);
私はjavafxの経験が十分ではないと確信しており、すべてのアイテムの同じセルにアイコンとテキストのペアを含むコンボボックスがあるため、どのように処理すればよいかわかりません。
Peter Duniho と PakkuDon のおかげで、私の文章の英語力が向上しました。