在将图片添加到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;,此令牌后预期的表达式
答案 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);
}