我遇到的问题似乎有些奇怪。当我添加一个新的ImageIcon并尝试运行该程序时,它只是给我一个灰色的屏幕,没有添加任何对象。
ImageIcon icon = new ImageIcon(getClass.getResource("zippo.jpg"));
但如果删除该行:
a
然后它完美无缺。 我没有收到任何错误消息,我一直在寻找,但我只能发现问题可能与gridbaglayout有关。
我如何解决它或者我必须改变布局? (这只是一个基于原始代码的简单代码作为示例,因此任何不包括必须更改布局的解决方案都非常受欢迎)
答案 0 :(得分:1)
如果在窗口调整大小或最小化/最大化后正确绘制某些内容,那么这是竞争条件的确定标志,因为您没有在事件调度程序线程上启动GUI。你的主要问题是你在早期调用setVisible()方法,在你将所有组件添加到顶级容器之前不要调用setVisible()。另一个问题是您没有在事件调度程序线程上启动GUI。请参阅固定代码中的主要方法:
public class Ctester {
public Ctester() {
Frame();
}
public void Frame() {
JFrame fr = new JFrame();
fr.setSize(500, 500);
fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fr.setResizable(false);
JPanel p = new JPanel(new GridBagLayout());
JLabel l = new JLabel("label");
JButton bm1 = new JButton("hellu");
p.add(l);
p.add(bm1);
fr.add(p);
fr.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new Ctester();
}
});
}
}
答案 1 :(得分:0)
尝试使用此代码,您可能希望将第一行代码放在try catch中,以防它找不到图像。
URL iconURL = getClass().getResource("/some/package/favicon.png");
// iconURL is null when not found
ImageIcon icon = new ImageIcon(iconURL);
fr.setIconImage(icon.getImage());
如果您只在Windows上使用此程序,请使用.ico文件,但如果它将是多平台则使用.png