3

我正在尝试使用 Imageicon 在 jframe 上简单地绘制图像。但是,当我运行它时,它只是空白。这是我的代码...

    public final class PICS

{

  public static final void main(String... aArgs)
  {   
      JFrame frame = new JFrame("IMAGE");
      frame.setVisible(true);
      frame.setSize(500,500);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      ImageIcon image = new ImageIcon("image/pic1.jpg");
      JLabel label = new JLabel("", image, JLabel.CENTER);
      JPanel panel = new JPanel(new BorderLayout());
      panel.add( label, BorderLayout.CENTER );
  } 
}

我对包括这个网站在内的所有 java 都很陌生,所以如果我遗漏了什么,我深表歉意。我也在使用 Eclipse,是否有可以用于图像的特定格式,或者大小有限制?

4

2 回答 2

2

两件事情。

首先,setVisible在构建框架及其内容之后进行最后一次调用......即

JFrame frame = new JFrame("IMAGE");
frame.setSize(500,500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("image/pic1.jpg");
JLabel label = new JLabel("", image, JLabel.CENTER);
JPanel panel = new JPanel(new BorderLayout());
panel.add( label, BorderLayout.CENTER );
// Make me last
frame.setVisible(true);

二、确保image/pic1.jpg存在且是image当前执行上下文下的目录。

如果图像是嵌入式资源(位于 Jar 或您的应用程序中),那么您需要为URL图像提供 a 而不是将 a视为String文件名......ImageIconString

ImageIcon image = new ImageIcon(PICS.class.getResource("image/pic1.jpg"));

例如。

我鼓励您使用JFrame#packover JFrame#setSize,因为它会将框架调整为您的内容的首选大小......

我还鼓励您花时间阅读Java 编程语言的代码约定初始线程

我还鼓励您使用ImageIOImageIcon因为它至少会在Exception出现问题时抛出

更新,测试图像路径

尝试将此添加到您的PICS类的构造函数中。这至少会告诉你图像不在哪里......

try {
    ImageIO.read(PICS.class.getResource("image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in image/pic1.jpg");
}
try {
    ImageIO.read(PICS.class.getResource("/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in /image/pic1.jpg");
}
try {
    ImageIO.read(PICS.class.getResource("resources/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in resources/image/pic1.jpg");
}
try {
    ImageIO.read(PICS.class.getResource("/resources/image/pic1.jpg"));
} catch (IOException ex) {
System.out.println("Not in /resources/image/pic1.jpg");
}
于 2013-08-18T04:14:26.763 回答
2

我对包括这个网站在内的所有java都很陌生

那么我建议你从阅读教程开始,尤其是Swing 教程。也许上一节How to Use Icons是一个很好的起点。示例代码将向您展示如何使用图标以及如何构建程序以便在 EDT 上执行 GUI 代码。并发教程将解释为什么 EDT 很重要。

于 2013-08-18T04:20:10.053 回答