Java 显示从JTable单元格到JLabel的Blob值
我有一个ListSelectionListener,它从某个行单元格中获取Blob值 并将其加载到JLabel。这里的问题是,每次我单击一行,它都会在高亮显示该行之前将图像加载到JLabel。加载图像时会有延迟。我如何解决这个问题Java 显示从JTable单元格到JLabel的Blob值,java,image,swing,jtable,listselectionlistener,Java,Image,Swing,Jtable,Listselectionlistener,我有一个ListSelectionListener,它从某个行单元格中获取Blob值 并将其加载到JLabel。这里的问题是,每次我单击一行,它都会在高亮显示该行之前将图像加载到JLabel。加载图像时会有延迟。我如何解决这个问题 mytable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){ @Override public void valueCh
mytable.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
@Override
public void valueChanged(ListSelectionEvent e) {
BufferedImage buffImg = null;
ImageIcon imgIcon = null;
Blob blob = (Blob) tableItem.getValueAt(selectedRow, 0);
InputStream is = blob.getBinaryStream();
buffImg = ImageIO.read(is);
imgIcon = new ImageIcon(buffImg.getScaledInstance(label.getWidth(), label.getHeight(),
Image.SCALE_SMOOTH));
label.setIcon(imgIcon);
}
});
要解决此问题,请仅在
false
时查询&progress。如果选择一行,用户单击另一行,将触发两个事件。一个用于取消选择第一行,第二个用于选择备用行
作为旁白。我强烈建议将
图像
存储在表中,而不是Blob
——这样在表行选择上就不会有可能长时间运行的代码。1)为了更快地获得更好的帮助,请发布一个(最小完整的可验证示例)或(简短、自包含、正确的示例)。2) 在源代码中只需要一行空白就可以了。{
之后或}
之前的空行通常也是多余的。太好了!它起作用了。以前,我尝试将图像存储在JTable单元格中,但由于加载时间较长,我改为使用此选项。因为我的JTable是用documentListener绑定到搜索文本字段的。DocumentEvent是否有与ListSelectionEvent.getValueIsAdjusting()方法等效的方法?因为我的JTextField在每次击键时都从数据库中检索数据,并且滞后。您可能会在触发单次摆动计时器后启动DB查询(延迟启动250-500毫秒)。在每个文档事件上,重新启动计时器的单个实例。当然,然后使用SwingWorker
运行DB访问,以免阻塞GUI的事件调度线程。有关更多详细信息,请参阅。