所以我试图通过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);
}
答案 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);
这是项目结构
答案 1 :(得分:0)
谢谢大家,但我找到了问题的答案 文件扩展名不应该是.jpeg,这是文件类型的名称,但应该是.jpg。 无论如何,谢谢你的帮助。我将在项目文件夹中复制文件夹并使用相对路径。 :d