无法在工具栏中的按钮上看到图像

PVB*_*PVB 1 java swing toolbar imagebutton

swing几天以来,我一直在研究开发gui应用程序.

以下代码旨在创建一个带退出按钮工具栏(包括图像 "exit.png").问题是虽然工具栏显示,但我无法看到图像.该工具栏的位置使用的borderlayout经理在java中.NORTH

    JMenuBar menubar = new JMenuBar();
    JMenu file = new JMenu("File");

    menubar.add(file);
    setJMenuBar(menubar);

    JToolBar toolbar = new JToolBar();
    toolbar.setFloatable(false);

    ImageIcon exit = new ImageIcon("exit.png");
    JButton bexit = new JButton(exit);
    bexit.setBorder(new EmptyBorder(0, 0, 0, 0));
    toolbar.add(bexit);
    //Default layout manager for JFrame is BorderLayout Manager
    add(toolbar, BorderLayout.NORTH);
Run Code Online (Sandbox Code Playgroud)

代码写在类构造函数中,类扩展了JFrameswing类.

请注意我已导入所需的课程.也没有编译错误.图像保存在创建.class的目录中.显示gui的其他元素没有错误.

请帮我确定问题所在.提前致谢.

小智 5

首先创建您的ImageIcon.

ImageIcon myIcon = createImageIcon("exit.png", "");
Run Code Online (Sandbox Code Playgroud)

以及Oracle网站上的createImageIcon()方法代码:

private ImageIcon createImageIcon(String path, String description) {
        URL imgURL = getClass().getResource(path);
        if (imgURL != null) {
            return new ImageIcon(imgURL, description);
       } else {
          System.err.println("Couldn't find file: " + path);
          return null;
       }
    }
Run Code Online (Sandbox Code Playgroud)

然后设置按钮的图标:

bexit.setIcon(myIcon);
Run Code Online (Sandbox Code Playgroud)

  • 好的答案+1.但是我总是在JButton上设置一个图标be = new JButton(新的ImageIcon("exit.png");并且有效.我认为PVB提供的代码片段工作的原因是ImageIcon使用的构造函数,只传递类型String(文件名),并将其用作按钮中匿名类的初始化程序. - > http://docs.oracle.com/javase/6/docs/api/javax/swing/ImageIcon.html (2认同)