java - 无法将 ImageIcon 添加到 JFrame

标签 java image swing embedded-resource imageicon

我一直在尝试将图像添加到 JFrame,但似乎无法完成。

我查看了在线教程和其他类似问题,但似乎没有任何效果。

ImageIcon wiz = new ImageIcon("wizard.png");
ImageIcon assassin = new ImageIcon("assassin.png");

JFrame frame = new JFrame("Select");
frame.setBounds(50, 50,1000, 1000);
JButton w = new JButton("Wizard");
JButton a = new JButton("Assasin");

JFrame f = new JFrame("Image");

JLabel img1 = new JLabel(wiz);

frame.setLayout(null);
f.setLayout(null);
f.setIconImage(wiz.getImage());

w.setBounds(30,380,100,60);
frame.add(w);

a.setBounds(200, 380, 100, 60);
frame.add(a);

f.setVisible(true);
frame.setVisible(true);

最佳答案

我认为您程序中的主要问题是您尝试使用 setLayout(null)setBounds()< 对组件(例如 JLabel)进行绝对定位 在组件上。

在 Swing 中,放置组件的正确方法是使用布局管理器。有关如何使用布局管理器的详细信息,请参阅本教程: https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

作为示例程序,我已经在下面的程序中成功地设置了图像(作为JFrame 的图标和JFrame 的内容区域)。试试看。

这是我的示例 JFrame 的屏幕截图。

enter image description here

import javax.swing.*;

public class FrameWithIcon
{
  public static void main(String[] args)
  {
    JFrame f = new JFrame();
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Since I'm not setting a layout manager to contentPane, it's default (BorderLayout) is used

    //This sets the image in JFrame's content area
    f.getContentPane().add(new JLabel(new ImageIcon("star.png")));

    //This sets JFrame's icon (shown in top left corner of JFrame)
    f.setIconImage(new ImageIcon("star.png").getImage());

    f.setBounds(300, 200, 400, 300);
    f.setVisible(true);
  }
}

关于java - 无法将 ImageIcon 添加到 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54155830/

相关文章:

java - 对上传的文档建立索引 - 只能由上传这些文档的用户搜索

java - 未处理的异常 : PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException : 10: , null, null) - 在一个系统中运行良好

image - vim 图像放置

image - 我正在寻找视频注释工具

java - 如何让android程序等待两个按钮被按下?

java - 在 jSTL 中迭代映射时出错

android - 如何在android中的图像的触摸部分执行颜色混合

java - 使用另一个类的方法时出错

java - 将 Shape 从 awt 转换为 javafx 中的 Shape

java - 当我在 statechange 上显示对话框时,JCheckbox 更改状态两次,如何解决?