2012-06-24 52 views
-1

我想在可滚动窗格中加载一些图像。但由于某种原因,它没有出现。这是我的一段代码添加图像。摆动组件不显示在JScrollPane中

private JFileChooser fileChooser = new JFileChooser(){ 
     @Override 
     public void approveSelection(){ 
      File files[] = fileChooser.getSelectedFiles(); 
      JPanel panel = new JPanel(new GridLayout(files.length, 1)); 
      for(int lop=0; lop< files.length; lop++){ 

       BufferedImage image = null; 
       try {     
        image = ImageIO.read(files[lop]); 
       } catch (IOException ex) {} 
       BufferedImage img = new BufferedImage(100, 100, 1); 
       Graphics2D g = img.createGraphics(); 
       g.drawImage(image, 0, 0, 100, 100, null); 
       g.dispose(); 

       ImageIcon icon = new ImageIcon(img); 
       JLabel lable = new JLabel(icon); 
       panel.add(lable);  

      } 
      jScrollPane1.getViewport().add(panel);  
      super.approveSelection(); 
     } 
    }; 

使用上述文件选择,我选择一些图像在垂直滚动窗格加载,以某种方式,滚动窗格水平滚动显示出来的长度变化,但也有在滚动没有内容。请检查以下屏幕截图。形状的标题下:你会看到一个空的容器与扩展滚动条

Screenshot

问候, Aqif哈米德

+1

*“摇摆部件没有出现在JScrollPane中了” *哎呀我不认为曾经发生过..this小时。也许是在最后一天的两倍。请在将来搜索。 –

回答

3

的问题是这行代码:

jScrollPane1.getViewport().add(new JFrame().add(panel)); 

为什么你创建一个JFrame?

你应该只创建JScrollPane的是这样的:

jScrollPane = new JScrollPane(panel); 

也可以设置滚动窗格的这样的观点:

jScrollpane.setViewportView(panel); 

此外,你应该只使用panel.add(lable)。 GridLayout将标签放在适当的位置。 而且你不应该忽略异常。变换空catch块:

try {     
    image = ImageIO.read(files[lop]); 
} 
catch (IOException ex) { 
    throw new RuntimeException(ex); 
} 
+0

对不起,我已经编辑我的帖子到 jScrollpane.setViewportView(panel); 它甚至没有这样的工作方式。我只是在尝试一种解决方案。 Thnxs –

+2

看我的编辑。如果不起作用,请发布SSCCE。 –

+0

立即检查 –