马蒂斯正确地将图像设置到面板上



我在将图像设置为pannel:时遇到了NetBeans资源管理问题

这是我不工作的代码:

try {
    BufferedImage myPicture = ImageIO.read(new File("images/3D.jpg"));
    JLabel picLabel = new JLabel(new ImageIcon(myPicture));
    pnlMain.add(picLabel); //the main and only pannel made by matisse is called pnlMain
} catch (IOException e) {
    JOptionPane.showMessageDialog(this, "Cannot set image");
}

名为"images"的文件夹位于MAIN项目文件夹中。有几个文件夹:build、nbproject、src和"images">
我遇到的问题是程序运行,但它没有设置图像。。。

有人建议我用这个代码在不同的包中制作另一个类:

public class PanelImage extends JPanel{
private Image imag;
public PanelImage(Image img){
    if(imagen != null){
        this.imagen = img;
    }
}
@Override
public void paint(Graphics g){
    g.drawImage(img, 0,0, getWidth(), getHeight(), this);
    setOpaque(false);
    super.paint(g);
}
}

但是我找不到合适的方法来实现它…

对于您的ImagePanel

  1. super.paint[Component]所有其他东西之前
  2. 不要覆盖paint,而是覆盖paintComponent
  3. 不要在paintComponent方法(即setOpaque()(中设置属性。此外,默认情况下JPanel是不透明的
  4. 覆盖面板上的getPreferredSize()

用于加载图像

养成不从文件系统读取图像的习惯,除非应用程序仅适用于您的机器。

相反,从类路径读取,并通过将图像打包到类路径中使其成为资源

  1. 更改文件结构

    ProjectRoot
             src
                images
                     3D.jpg
    
  2. 从类路径读取。使用ImageIO确保路径正确。如果无效,则会抛出异常

    URL url = getClass().getResource("/images/3D.jpg"); 
    Image image = ImageIO.read(url);
    

对于Netbeans GUI Builder

您可以使用设计工具设置标签图标

  1. 从导航器或设计视图中选择标签
  2. 转到右侧的属性窗口,找到属性icon
  3. 单击属性右侧的省略号按钮,将出现一个对话框
  4. 找到您的图像并选择"确定"(确保您的图像位于src中的包中(

请参阅相关和可能相关的

相关内容

  • 没有找到相关文章

最新更新