JButton没有在GUI中显示Icon图像

时间:2015-03-27 20:51:00

标签: java swing user-interface icons jbutton

我尝试使用GUI显示.png图片。但我在显示图片时遇到了麻烦。 我想我已经搞砸了我的指示,但似乎无法找到可行的解决方案。

我的指示告诉我......

  • 将标题设置为Lab Button
  • 创建两个类型为Icon的局部变量:image1和image2。 使用Image1和Image2上的新ImageIcon初始化它们 - 如下所示: Icon image1 = new ImageIcon(getClass()。getResource(" Image1.png"));
  • 使用基于Image3
  • 的新ImageIcon初始化字段clickImage
  • 使用新的JButton初始化字段imgButton,该JButton接受image1作为唯一参数
  • 在imgButton上调用方法setRolloverIcon并将image2作为翻转图标传递
  • 将imgButton添加到此(ImageButton,这是一个JFrame)

似乎我需要创建一个初始化imgButton的方法。但是,如果我这样做,我不需要为每个Icon图像创建一个新变量吗?例如

imgButton = new JButton(image1);
final JButton imgButton2 = new JButton(image2);
final JButton imgButton3 = new JButton(image3);

我非常感谢能得到的任何帮助。感谢。

package ImageButton.Downloads;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

public class ImageButton extends JFrame
{


    private final JButton imgButton;
    private final Icon clickImage;

    public ImageButton() 
    {


        JFrame frame = new JFrame();
        frame.setTitle("Lab Button");

        Icon image1 = new ImageIcon(getClass().getResource("Image1.png"));
        Icon image2 = new ImageIcon(getClass().getResource("Image2.png"));
        clickImage = new ImageIcon(getClass().getResource("Image3.gif"));

        imgButton = new JButton(image1);

        imgButton.setRolloverIcon(image2);



    }


}

package ImageButton.Downloads;


import javax.swing.JFrame;

public class ImageButtonApp 
{

    public ImageButtonApp() 
    {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) 
    {
        ImageButton imageButton = new ImageButton();

        imageButton.setSize(660, 660);
        imageButton.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        imageButton.setVisible(true);


    }

}

1 个答案:

答案 0 :(得分:3)

您正在创建两个 JFrame,显示一个,但将JButton添加到 none 中。换句话说,您的代码忽略了这个rec​​:

  

将imgButton添加到此(ImageButton,这是一个JFrame)

解决方案:根据您的说明,只使用一个 JFrame,您的类,将JButton添加到它或添加到JFrame的JPanel,并显示它。

具体来说,改变一下:

JFrame frame = new JFrame(); // extra JFrame that's never used!
frame.setTitle("Lab Button");

到此:

super("Lab Button");

并在构造函数的末尾添加add(imgButton);