我想显示一个包含文本和图像的列表。我能够做到这一点,但选择模型很时髦。当我用鼠标选择列表中的项目时,似乎选择了整个列表视图元素。当我使用箭头键时,选择模型工作正常。
在我的控制器中,我有可观察列表
public class Game {
private String name;
private Image image;
}
在搜索如何显示图像和名称的解决方案时,我发现了许多使用
setCellFactory
方法的堆栈溢出解决方案,如下面的代码片段所示:
listView.setCellFactory(param -> new ListCell<>() {
private final ImageView imageView = new ImageView();
@Override
public void updateItem(String item, boolean empty) {
if (empty) {
setText(null);
setGraphic(null);
} else {
imageView.setImage(/*Some image*/);
setText(game.getName());
setGraphic(imageView);
}
}
});
然而,我想显示的图像存储在我的ObservableList中的Game对象中。根据我的理解,上面的
String项
参数是Game objectstoString
方法,但我想在制作自定义ListCell时访问整个Game对象。我试图改变该解决方案,以访问整个Game对象。这就是我的代码当前的样子:
public class MyController implements Initializable {
@FXML
public ListView<Game> listView;
public ObservableList<Game> gameList;
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
gameList = FXCollections.observableList(/*List of games*/);
listView.setItems(gameList);
listView.setCellFactory(param -> new ListCell<>() {
private final ImageView imageView = new ImageView();
@Override
public void updateItem(Game game, boolean empty) {
if (empty) {
setText(null);
setGraphic(null);
} else {
imageView.setImage(game.getImage());
setText(game.getName());
setGraphic(imageView);
}
}
});
}
}
但是,我可以使用箭头键来选择列表中我想要的任何项目。当我这样做时,从我的观察列表中选择的游戏被返回。
有人知道我该如何解决这个问题吗?
默认的ListCell.updateItem(…)
方法处理选择等。所以你一定要打电话给它。
从留档:
Cell的子类正确覆盖updateItem方法非常重要...请注意该代码示例中的两个要点:
所以你需要:
listView.setCellFactory(param -> new ListCell<>() {
private final ImageView imageView = new ImageView();
@Override
public void updateItem(Game game, boolean empty) {
// call default implementation:
super.updateItem(item, empty);
if (empty) {
setText(null);
setGraphic(null);
} else {
imageView.setImage(game.getImage());
setText(game.getName());
setGraphic(imageView);
}
}
});
我想在JavaFX的ImageView中显示图像。图像应该从SQLite数据库中获取,并在场景加载时显示。我使用以下代码片段从数据库获取代码,并在之前创建的ImageView中显示它。但是图像没有按预期显示。我做错了吗?P. S.我测试了改变路径在两个和当读取文件从目录到。但似乎没有什么奏效。但是当我手动将一个图像文件放在src目录中并尝试读取它时,它就像一个魅力。但是我想展示一张从数据库中提取的
它应该显示一个与掷骰子一致的图像,但什么也没有发生。有问题的图像在包中(如果有关系,请单击并拖入项目窗口)。我在system.out.print中添加了t,以便显示Dice1和2的结果,这样我就知道这是有效的。 我还需要添加一些东西来使它看起来像吗?我以前从未在JavaFX中使用过实际的图像....总的来说,我对JavaFX是新手。 GetChildren c:\users\ethan c.b的错
我一直在研究如何使用HTML5
问题内容: 我需要在手机中打开我的画廊,然后选择一张在活动中在imageview中打开的图片..没什么困难..但是我在模拟器(genymotion)中有完美的代码和thise代码可以运行..但是在小米Mi4上却没有。 打开画廊选择项目,什么也没有。 我没有更多的电话了:( 我尝试下载一些与此主题相关的示例,并且每个示例都是相同的。 您是否有一些从图库中选择图像并在imageview中显示的项目?如
问题内容: 是否有将图像添加到JavaFX ListView的方法? 这是我当前设置列表视图项的方式。 我还使用列表视图值作为ID来知道选择了哪个。 问题答案: 实现显示图片的,并在上设置。该标准的Oracle教程有一个自定义列表单元实现的一个例子。 您将按照以下方式进行操作: 该方法可以经常调用,因此最好预加载图像并将其提供给单元使用,而不是每次调用都创建它们。
我一直试图使用FXML在JavaFX应用程序中显示我的图像,但没有成功。我的代码: 没有错误,但我的图像没有显示。我想图像已加载,但未显示。 这可能吗?我怎么查?如果是的话,不应该有一个错误给它吗? 事实上,即使我给出了一个不正确的名称,也没有运行时错误。也许没上子弹? 我也试过加载不同的图像和改变尺寸,没有任何效果。 ->运行时错误#1 ->林特错误+运行时错误#1 ->林特错误+运行时错误#1