0

我有一个方法可以返回一个 jpanel,它的布局设置类似于图像轮播。JPanel我已经检查过,直接应用时,此代码在单个上运行良好。但是在多个地方都使用了相同的布局。因此,我想创建一个通用方法来设置此布局并返回一个jPanel. 这是我写的方法:

public static JPanel loadImages(String Location) throws IOException{
    JPanel ImagePanel = new JPanel();
      File directory = new File(Location);
     ImageIcon image;

     String[] imageFiles = directory.list();
    DefaultListModel model = new DefaultListModel();   
     JLabel lab1=new JLabel();
      JCheckBox  chkbox ; 
    ImagePanel.setLayout(new GridBagLayout()); 

    for (int ii=0; ii<imageFiles.length; ii++) {
       GridBagConstraints constraint = new GridBagConstraints();  
        image = new ImageIcon(imageFiles[ii]);
            lab1 = new JLabel(image);
        constraint.gridx = ii;
        constraint.gridy =0;  
        ImagePanel.add(lab1,constraint);
    }
    for (int ii=0; ii<imageFiles.length; ii++) {
        GridBagConstraints constraint1 = new GridBagConstraints();         
        constraint1.anchor = GridBagConstraints.SOUTH;           
        chkbox = new JCheckBox(imageFiles[ii]);
        constraint1.gridx = ii;
        constraint1.gridy =1;

        ImagePanel.add(chkbox, constraint1);
      }  
    return ImagePanel;

  }

我的想法是,在所有需要这样做的地方,我都会在 UI 中设置一个 jscrollpane。我想调用这个方法来返回这个 JPanel,我想把它添加到滚动窗格中。

private void jRadioButton3ActionPerformed(java.awt.event.ActionEvent evt) {
      jScrollPane3.add(loadImages("C://users//images"));
      jScrollPane3.revalidate();
      jScrollPane3.repaint();
 }

但什么都没有显示。是不是因为没有设置布局?

4

1 回答 1

1

不要在 JScrollPane 上使用 add。

尝试:

jScrollPane3.setViewportView(loadImages("C://users//images"));
于 2013-04-03T17:35:51.320 回答