我使用Java构建一个简单的界面,它没有说错误。但是它无法在按钮上显示1ImageIcon1(它只有按钮的名称。)。我该如何解决?
这是代码。
public static void main(String[] args) {
JFrame frame=new JFrame("Hi everyone");
frame.setSize(500,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pane=new JPanel();
Font font=new Font(Font.SERIF, Font.BOLD,20);
JLabel label=new JLabel("How about a presidation quote");
label.setFont(font);
pane.add(label);
ImageIcon icon=new ImageIcon("ChenGao.jpg");
JButton ChenGao = new JButton("ChenGao",icon);
ChenGao.setHorizontalTextPosition(SwingConstants.CENTER);
ChenGao.setVerticalTextPosition(SwingConstants.BOTTOM);
pane.add(ChenGao);
JTextArea textArea= new JTextArea(10,40);
textArea.setText("Yes we can");
pane.add(textArea);
frame.setContentPane(pane);
frame.setVisible(true);
}
答案 0 :(得分:1)
通常,(至少)有两种类型的“资源”可供讨论,外部和内部。
外部资源是驻留在应用程序上下文之外的资源,例如文件系统上的文件。内部资源是位于应用程序上下文中的资源。这些也被称为嵌入式资源,因为它们位于应用程序的类路径上下文中,通常位于一个或多个Jar文件中。
在这种情况下,您无法像普通文件那样访问它们,而是需要使用Class#getResource
或Class#getResourceAsInputStream
,具体取决于您的需求。
根据您的意见,我建议你需要使用
ImageIcon icon = new ImageIcon(getClass().getResource("ChenGao.jpg"));
或者
ImageIcon icon = new ImageIcon(getClass().getResource("/ChenGao.jpg"));
取决于图像相对于试图加载它的类的位置。
如果图像包含在源目录
中的某个目录中,您可能还需要提供路径由于ImageIcon
因某些原因导致加载失败而无法提供任何有用信息,因此通常最好使用ImageIO
加载图片。如果出现问题,至少会抛出异常
查看Reading/Loading an Image了解详情。
答案 1 :(得分:0)
您可以阅读有关ImageIcon的Oracle在线API。 使用相对路径,如:
new ImageIcon("src/ChenGao.jpg")