将图像存储到Array

时间:2017-06-25 14:20:01

标签: java arrays user-interface

在将图片添加到JLabel之前,我使用下面的代码来调整它们的大小。

BufferedImage myPicture1 = ImageIO.read(new
File("C:\\Users\\yumi\\Desktop\\Salad.png"));
Image scaled1 = myPicture1.getScaledInstance(80,95,Image.SCALE_SMOOTH); 
JLabel picLabel1 = new JLabel("Japanese Noodles",new 
ImageIcon(scaled1),JLabel.CENTER);
panel.add(picLabel1);

现在我有数组,想将图像存储到数组

static private JLabel[] foodLabel;
static private JTextField[] qtyField;
static private ImageIcon[] imageIcon;
static private Image[] imageScaled;
static private BufferedImage[] image;
static private File[] file;
private static final int ELEMENTS = 9;

尝试读取文件并进行缩放

file[0] = new File("C:\\Users\\yumi\\Desktop\\Salad.png");
         .....

for (int i = 0; i < ELEMENTS; i++) {
        image[i] = ImageIO.read(file[i]);
        imageScaled[i] = image[i].getScaledInstance(80,95,Image.SCALE_SMOOTH);
        foodLabel[i] = new JLabel(imageIcon([imageScaled[i]])); // error
}

错误

  

线程中的异常&#34; AWT-EventQueue-0&#34; java.lang.Error:未解决的编译问题:       令牌上的语法错误&#34;(&#34;,此令牌后预期的表达式

1 个答案:

答案 0 :(得分:1)

以下内容应该有效。您必须先为缩放图像创建ImageIcon

for (int i = 0; i < ELEMENTS; i++) {
    image[i] = ImageIO.read(file[i]);
    imageScaled[i] = image[i].getScaledInstance(80,95,Image.SCALE_SMOOTH);
    imageIcon[i] = new ImageIcon(imageScaled[i]);
    foodLabel[i] = new JLabel(imageIcon[i]);
}

请注意,似乎没有理由将所有这些值保留在数组中。除非您有更多代码引用这些数组,否则以下内容会更清晰:

for (int i = 0; i < ELEMENTS; i++) {
    Image image = ImageIO.read(file[i]);
    Image imageScaled = image.getScaledInstance(80,95,Image.SCALE_SMOOTH);
    ImageIcon imageIcon = new ImageIcon(imageScaled);
    foodLabel[i] = new JLabel(imageIcon);
}