为什么我的图标不会显示在我的JButton上?

时间:2014-04-13 22:32:16

标签: java swing icons jbutton embedded-resource

所以我试图通过JButton构造函数

将图像放在JButton
JButton button = new JButton(ImageIcon image)

我有几个图标被定义为

ImageIcon OpenIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\open.jpeg");
ImageIcon SaveIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\save.jpeg");
ImageIcon CutIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\cut.jpeg");
ImageIcon CopyIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\copy.jpeg");
ImageIcon PasteIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\paste.jpeg");

图标文件位于名为

的文件夹中
  

C:\ Users \ Wonseok \ Documents \ CompSciClass \ Homework Files \ icons。

这些图标所在的按钮定义为

JButton OpenButton = new JButton(OpenIcon);
JButton SaveButton = new JButton(SaveIcon);
JButton CutButton = new JButton(CutIcon);
JButton CopyButton = new JButton(CopyIcon);
JButton PasteButton = new JButton(PasteIcon);

我在JPanel中有这些。 我的问题是图标在JButtons上没有正确显示,我不明白为什么。按钮显示为小而薄的空白矩形,上面没有图像。如果你想要一张照片,请告诉我如何从我的电脑上发布一张照片。这是我的电脑烦人和毛病吗?或者我的编码有问题吗?

相关代码是

JPanel ButtonBar = new JPanel(new FlowLayout());
JPanel FileActions = new JPanel(new GridLayout(1, 2));
ImageIcon OpenIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\open.jpeg");
ImageIcon SaveIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\save.jpeg");
JButton OpenButton = new JButton(OpenIcon);
JButton SaveButton = new JButton(SaveIcon);
JPanel TextActions = new JPanel(new GridLayout(1, 3));
ImageIcon CutIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\cut.jpeg");
ImageIcon CopyIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\copy.jpeg");
ImageIcon PasteIcon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\paste.jpeg");
JButton CutButton = new JButton(CutIcon);
JButton CopyButton = new JButton(CopyIcon);
JButton PasteButton = new JButton(PasteIcon);

public basic_text_editor()
{

    super("Text Editor");
    setSize(WIDTH, HEIGHT);
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    getContentPane().setBackground(Color.WHITE);
    setLayout(new FlowLayout(FlowLayout.LEFT));

    FileActions.add(OpenButton);
    FileActions.add(SaveButton);

    TextActions.add(CutButton);
    TextActions.add(CopyButton);
    TextActions.add(PasteButton);

    ButtonBar.add(FileActions);
    ButtonBar.add(TextActions);

    add(ButtonBar);

}

2 个答案:

答案 0 :(得分:1)

将图像放入项目本身,否则当此代码在另一台机器上发货时,它将无法工作。避免使用绝对路径。

从资源文件夹中查看图片2.png

ImageIcon folderIcon = new ImageIcon("resources/2.png");

OR

ImageIcon icon = new ImageIcon(ImageIO.read(new File("resources/2.png")));

OR

如果图像位于包含类的包中,请尝试使用此方法

ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("2.png")));

OR

我从不建议你使用绝对路径,但你可以试试。

ImageIcon icon = new ImageIcon(ImageIO.read("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\open.jpeg"));

OR

ImageIcon icon = new ImageIcon("C:\\Users\\Wonseok\\Documents\\CompSciClass\\Homework Files\\icons\\open.jpeg");

如果要重新调整图像大小,请使用此方法。

public BufferedImage resizeImage(BufferedImage originalImage, int width, int height)
        throws IOException {
    BufferedImage resizedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g = resizedImage.createGraphics();
    g.drawImage(originalImage, 0, 0, width, height, null);
    g.dispose();
    return resizedImage;
}
  

如何将Image(BufferedImage)转换为ImageIcon?

 ImageIcon icon = new ImageIcon(image);

这是项目结构

enter image description here

答案 1 :(得分:0)

谢谢大家,但我找到了问题的答案 文件扩展名不应该是.jpeg,这是文件类型的名称,但应该是.jpg。 无论如何,谢谢你的帮助。我将在项目文件夹中复制文件夹并使用相对路径。 :d