选择JcomboBox项时显示图像

时间:2014-05-21 22:38:49

标签: java swing

我想要做的是在从comboBox中选择指定项目时显示图像,知道comboBox的项目发生更改且数字未修复。此代码显示了我如何添加依赖于“for”

的项目
for (int j = 1; j <= 6; j++) {
    if (condition) {
    System.out.println(result); 
        combo.addItem("component N°" + j);
    }
}

我需要的是在选择项目时显示某个图像!我真的不知道该怎么做。我已尝试使用actionlistener执行操作,但我不知道如何将项目选择与我的图像相关联。

我使用此方法将图像显示为JPanel

public static void display(String path, JPanel panel) {
    BufferedImage image = null;
    try {
        image = ImageIO.read(new File(path));
    } catch (IOException e2) {

        e2.printStackTrace();
    }
    Image dimg = image.getScaledInstance(panel.getWidth(), panel.getHeight(),
            Image.SCALE_SMOOTH);
    panel.add(new JLabel(new ImageIcon(dimg)));

}

2 个答案:

答案 0 :(得分:1)

  

例如,如果我从JcomboBox中选择(组件N°2),那么我需要显示的图像是image2.png(j = 2)

只需添加ActionListener并从所选项目中检索该号码。您可以使用JLabel来显示图片。只需致电setIcon()即可更改图标。

示例代码:

//final JLabel label = new JLabel();

final ComboBox<String> jComboBox = new JComboBox<String>();
jComboBox.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        String value=(String)jComboBox.getSelectedItem();
        int digit =Integer.valueOf(value.replaceAll("component N°","").trim());
        String imageName="image"+digit+".png";

        // show the image  
        // label.setIcon(...);          
    }
});

请看看我的另一篇文章。它可能会帮助您形成正确的图像路径。


  

我刚刚显示了一个图像但是当我更改组合框项目时没有任何反应

编辑(在添加新图片之前删除已添加的图片)

 public static void display(String path, JPanel panel){
    ...
    panel.removeAll();                          // Remove already added image
    panel.add(new JLabel(new ImageIcon(dimg))); // Add new image
    panel.revalidate();
    panel.repaint();
 }

答案 1 :(得分:0)

要使用JCombobox,您需要使用ItemStateChanged方法。在该方法中,您可以获得所选索引。然后从索引中获取索引中的数据。现在您拥有所选数据并可以执行您想要执行的操作。