Java 显示从JTable单元格到JLabel的Blob值

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

我有一个ListSelectionListener,它从某个行单元格中获取Blob值 并将其加载到JLabel。这里的问题是,每次我单击一行,它都会在高亮显示该行之前将图像加载到JLabel。加载图像时会有延迟。我如何解决这个问题

      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的事件调度线程。有关更多详细信息,请参阅。