JButton 不在 GUI 中显示图标图像
JButton isn't displaying Icon image in GUI
我正在尝试使用 GUI 显示 .png 图片。但是我在显示图片时遇到了问题。
我想我已经隔离了我在说明中搞砸的地方,但似乎找不到可行的解决方案。
指示中告诉我...
- 将标题设置为实验室按钮
- 创建两个Icon类型的局部变量:image1和image2。
使用基于 Image1 和 Image2 的新 ImageIcon 初始化它们 - 如下所示:
图标 image1 = new ImageIcon(getClass().getResource("Image1.png"));
- 使用基于 Image3 的新 ImageIcon 初始化字段 clickImage
- 使用接受 image1 作为唯一参数的新 JButton 初始化字段 imgButton
- 在 imgButton 上调用方法 setRolloverIcon 并将 image2 作为 roll-over 图标传递
- 将 imgButton 添加到此(ImageButton,它是一个 JFrame)
看来我需要创建一个方法来初始化 imgButton。但是如果我那样做,我不需要为每个图标图像创建一个新变量吗?例如
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);
}
}
您正在创建 两个 JFrames,显示其中 一个,但将您的 JButton 添加到 none 个。换句话说,您的代码忽略了这个 rec:
Add the imgButton to this (ImageButton, which is a JFrame)
解决方案:仅使用一个 JFrame,您的class按照您的说明,将您的JButton 添加到它或添加到添加到JFrame 的JPanel,然后显示它。
具体来说,更改为:
JFrame frame = new JFrame(); // extra JFrame that's never used!
frame.setTitle("Lab Button");
对此:
super("Lab Button");
并在构造函数的末尾添加一个add(imgButton);
。
我正在尝试使用 GUI 显示 .png 图片。但是我在显示图片时遇到了问题。 我想我已经隔离了我在说明中搞砸的地方,但似乎找不到可行的解决方案。
指示中告诉我...
- 将标题设置为实验室按钮
- 创建两个Icon类型的局部变量:image1和image2。 使用基于 Image1 和 Image2 的新 ImageIcon 初始化它们 - 如下所示: 图标 image1 = new ImageIcon(getClass().getResource("Image1.png"));
- 使用基于 Image3 的新 ImageIcon 初始化字段 clickImage
- 使用接受 image1 作为唯一参数的新 JButton 初始化字段 imgButton
- 在 imgButton 上调用方法 setRolloverIcon 并将 image2 作为 roll-over 图标传递
- 将 imgButton 添加到此(ImageButton,它是一个 JFrame)
看来我需要创建一个方法来初始化 imgButton。但是如果我那样做,我不需要为每个图标图像创建一个新变量吗?例如
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);
}
}
您正在创建 两个 JFrames,显示其中 一个,但将您的 JButton 添加到 none 个。换句话说,您的代码忽略了这个 rec:
Add the imgButton to this (ImageButton, which is a JFrame)
解决方案:仅使用一个 JFrame,您的class按照您的说明,将您的JButton 添加到它或添加到添加到JFrame 的JPanel,然后显示它。
具体来说,更改为:
JFrame frame = new JFrame(); // extra JFrame that's never used!
frame.setTitle("Lab Button");
对此:
super("Lab Button");
并在构造函数的末尾添加一个add(imgButton);
。