gpt4 book ai didi

java - 程序运行时JButton中的图标不显示,可能是什么原因?

转载 作者:行者123 更新时间:2023-12-01 13:27:56 25 4
gpt4 key购买 nike

我正在使用 Java 进行训练,尤其是使用 GUI(Swing 和 AWT)进行训练,但我在 JButton 中遇到了图标问题。图像未显示,为了使其可见,我必须调整窗口大小,我该怎么办?

这是代码:

public class MainWindow extends JFrame implements WindowListener, KeyListener, ActionListener, FocusListener, MouseListener{

private final String APPLICATION_NAME = "GUI";
private final String APPLICATION_VERSION = "0.0.1";

private final JButton btnCiao;

JPanel panel = new JPanel();
JPanel panel2 = new JPanel();

public MainWindow(){
super();
this.setTitle(APPLICATION_NAME + " " + APPLICATION_VERSION);

this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.addWindowListener(this);
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((int)(dimension.getWidth()/2-getWidth()/2), (int)(dimension.getHeight()/2-getHeight()/2));
this.setVisible(true);
setMinimumSize(new Dimension(600,600));
add(panel);
btnCiao = new JButton("WAU");
panel.add(btnCiao);

JButton imageButton = new JButton();
try{
Image img = ImageIO.read(getClass().getResource("Nike.jpg"));
Image img2 = ImageIO.read(getClass().getResource("Adidas.jpg"));
imageButton.setIcon(new ImageIcon(img));
imageButton.setPressedIcon(new ImageIcon(img2));
} catch(IOException ex){}

// to remove the border
imageButton.setBorder(null);
panel.add(imageButton);
}
}

最佳答案

添加 JButton 后,您需要在 JFrame 上调用 revalidate() 方法。

当您更改组件的属性并影响其外观时,您应该调用此方法。

Difference between validate(), revalidate() and invalidate() in Swing GUI

关于java - 程序运行时JButton中的图标不显示,可能是什么原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21709997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com