因此,我认为这可能与StreamSource有关,但我无法完全找到问题所在。实际上,我有一个Vaadin网格,它从SQL数据库中检索数据。“Image”列保存上传的图像的BLOB值(成功方法)。
我试图做的是允许用户单击表中的按钮,并在弹出视图中显示该图像。
我的ViewExpenses类:
aGrid.addColumn(reciept -> "Receipt", new ButtonRenderer<>(clickEvent ->{
new ButtonRenderer<>(clickEvent ->{
Window window = new Window();
window.setModal(true);
window.addCloseShortcut(ShortcutAction.KeyCode.ESCAPE, null);
UI.getCurrent().addWindow(window);
Expenses anExpense = aGrid.getSelectionModel().getSelectedItems().stream().findFirst().get();
long anID = anExpense.getId();
System.out.println(anID);
StreamResource.StreamSource streamSource = (StreamResource.StreamSource)aController.getImage(anID);
System.out.println("4");
StreamResource streamResource = new StreamResource(streamSource,"");
Embedded embedded = new Embedded("",streamResource);
System.out.println("5");
Image anImage = new Image("Reciept", streamResource);
window.setContent(anImage);
anImage.setSizeFull();
window.setSizeFull();
})
);
我的后端DbController类获取图像的方法:
public InputStream getImage(long anIndex){
InputStream binaryStream = null;
try{Statement stmt = null;
int intIndex = (int) anIndex;
//connect to database
Class.forName("org.h2.Driver");
Connection conn = DriverManager.
getConnection("jdbc:h2:mem:Users", "sa", "");
System.out.println("Connected database successfully...");
//insert data
System.out.println("Getting expenses from the database...");
stmt = conn.createStatement();
ResultSet resultSet = stmt.executeQuery("SELECT * FROM EXPENSES");
Blob imageBlob = resultSet.getBlob(intIndex);
binaryStream = imageBlob.getBinaryStream(0, imageBlob.length());
}
catch (Exception e){
}
return binaryStream;
}
这件事让我挠头已经有一段时间了,如果有任何帮助,我将不胜感激。
您永远不会显示PopupView
。然后,当单击按钮时,侦听器初始化一个新的PopupView
,但不对其执行任何操作。
您可以:
>
单击按钮时打开一个模态窗口:
Window window = new Window();
window.setModal(true);
window.addCloseShortcut(KeyCode.ESCAPE, null);
UI.getCurrent().addWindow(window);
Image anImage = ...
window.setContent(anImage);
anImage.setSizeFull();
window.setSizeFull();
使用渲染弹出视图的组件渲染器。
grid.addColumn(x->new PopupView(...))
.setRenderer(new ComponentRenderer())
(注意使用组件渲染器会影响性能,按钮渲染器更轻)。
使用任何按钮都可以触发一个弹出菜单,只需要把它放置在一个.btn-group中,并提供适当的弹出菜单标记。 插件依赖 按钮弹出菜单需要你的Bootstrap中调用了弹出菜单插件。 内容 单按钮弹出菜单 通过一些基本的标记变化,将一个按钮变成一个弹出菜单。 <!-- Single button --> <div class="btn-group"> <button type="button"
我正在尝试让selenium按下打印弹出的保存按钮来保存pdf文件。我可以让selenium按下“print”按钮,但一旦弹出窗口出现adress chrome://print/就不会发生任何事情。还有别的办法吗? 到目前为止,这是零件的代码:
问题内容: Vaadin 7中的和组件有什么区别? 我应该使用哪个,什么时候使用? 问题答案: Grid是一个功能更强大的新组件,它应该是Table的后继组件(请参阅Table已死,Grid长寿)。因此,应该没有任何必要偏爱表格而不是网格。 这是Vaadin从表格迁移到网格的一系列文章的第一篇:https : //vaadin.com/blog/-/blogs/mission-rip- table
我想在JavaFX中创建特定的组件。在 onClick 事件后显示 poupup 的按钮。 情景: > < li> 我们单击按钮 弹出显示下面的按钮(如图片上所示)
为了测试目的,我正在玩vaadin 14.2.2。然而,我立即使用网格解决了第一个问题。https://vaadin.com/docs/v14/flow/components/tutorial-flow-grid.html中的示例 不在可视化中生成输出。还有几个要使用的GitHub问题中的提示 不能解决这个问题。有人知道怎么解决这个问题吗?
我有一个带有两个链接按钮的动态gridview。如果我点击链接按钮,事件不会触发。但如果我在页面加载中调用“display”方法,它就可以正常工作了。代码如下 如果我把“显示”方法放在页面加载中,它将调用每个回发。我不想要那个。我想在下拉选择更改事件中调用此方法。如果我把“显示”方法放在那个链接点击事件不触发。所以我必须做什么来克服这个问题。