添加简单图像

时间:2014-12-13 11:39:07

标签: java image swing

我只想添加一个简单的图片,但我收到IOException错误。

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

我一直尝试了几种不同的方式,所有这些方法都失败了。

private JRadioButton A = new JRadioButton("1");
private JRadioButton B = new JRadioButton("2");
private JRadioButton C = new JRadioButton("3");
private JRadioButton D = new JRadioButton("3");
private ImageIcon image;
private JLabel picLabel;



public Q2 ()// Constructor
{
super("Ait shit");


GridBagLayout GB = new GridBagLayout();
GridBagConstraints Col = new GridBagConstraints();
getContentPane().setLayout(GB);
Col.fill = GridBagConstraints.HORIZONTAL;
image = new ImageIcon (getClass().getResource("1.jpg"));





picLabel= new JLabel(image);
Col.gridx =0;
Col.gridy =0;
GB.setConstraints(A,Col);
getContentPane().add(A);
Col.gridx =0;
Col.gridy =-1;
GB.setConstraints(B,Col);   
getContentPane().add(B);
Col.gridx =0;
Col.gridy =-2;
GB.setConstraints(C,Col);   
getContentPane().add(C);
Col.gridx =3;
Col.gridy =3;
GB.setConstraints(picLabel,Col);    
getContentPane().add(picLabel);
setSize(400,320);
setVisible(true);




}

public void actionPerformed(ActionEvent e){

    if(e.getSource().equals(4))
    {



    }

}



public static void main(String args[])
{
    Q2 a = new Q2 ();
}

}

1 个答案:

答案 0 :(得分:1)

为什么我会收到UnhandledIOExeption

快速查看代码会发现您尝试从File读取,这可能会导致必须处理的IOExeption。这一行:

BufferedImage myPicture = ImageIO.read(new File("42.png"));

throws IOException

来自oracle

  

public static BufferedImage read(文件输入)                             抛出IOException

     

作为解码所提供文件的结果返回BufferedImage,其中ImageReader自动从当前注册的文件中选择。文件包含在ImageInputStream中。如果没有已注册的ImageReader声明能够读取生成的流,则会返回null。   getUseCacheand getCacheDirectory的当前缓存设置将用于控制已创建的ImageInputStream中的缓存。

     

请注意,在从文件名创建String;之后,没有读取方法将文件名作为File使用此方法。

     

此方法不会尝试找到可以使用ImageReadersFile;直接从IIORegistry读取的ImageReaderSpi

     

<强>参数:

     

输入 - 要读取的File

     

<强>返回:

     

包含输入的已解码内容的BufferedImage,或null

     

<强>抛出:

     

IllegalArgumentException - 如果输入为null

     

IOException - 如果在阅读过程中发生错误。

这意味着您必须通过将行放在IOExeption try块中来处理catch,如下所示:

try {
    BufferedImage myPicture  = ImageIO.read(new File("42.png"));
    // do stuff with myPicture  here
} catch (IOException e) {
    // Handle the exaption here
    e.printStackTrace();
}

另一个问题是myPicture仅在try范围内可见,因此您真正应该做的是在类级别声明变量并在Constractor中初始化它们像:

private JRadioButton A;
private JRadioButton B;
private JRadioButton C;
private JRadioButton D;
private BufferedImage myPicture;
private JLabel picLabel;

// Constructor
public ExamPrac (){
    A = new JRadioButton("1");
    B = new JRadioButton("2");
    C = new JRadioButton("3");
    D = new JRadioButton("3");
    try {
        myPicture = ImageIO.read(new File("42.png"));
        picLabel = new JLabel(new ImageIcon(myPicture));
    } catch (IOException e) {
        // Handle the Exception here
        e.printStackTrace();
    }
    // your other code
}