【发布时间】:2012-03-23 11:23:43
【问题描述】:
在你说这个问题已经被问到之前,我知道并且我已经在这里阅读了 4 或 5 个相同的问题,但没有任何帮助。
我尝试过使用 getdocumnetbase、getcodebase、缓冲图像与图像相比,以及到目前为止我遇到的所有内容。对我的情况没有任何帮助。
我的问题是,当我运行小程序时,图像没有显示。我在小程序中添加了一个按钮以查看它是否显示,但实际上它不会显示,除非我将鼠标悬停在它上面或重新调整窗口大小。
appelt 现在唯一要做的就是显示图像和按钮,但它不起作用。所以我迷路了。
代码如下:
public void init() {
JPanel panel = new JPanel()
{
public void paintComponent(Graphics g)
{
BufferedImage img = null;
try {
img = ImageIO.read(new File("..\\gifs\\Assembled.jpg"));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("inside JPanel");
g.drawImage(img, 0, 0, this);
super.paintComponent(g);
}
};
JButton j = new JButton("hi");
panel.add(j);
add(panel);
addMouseListener(this);
repaint();
}
谢谢。
现在你已经投了反对票(并且没有帮助我)让我们看看是否有人可以真正提供帮助。
公共无效初始化(){
JPanel panel = new JPanel(){
public void paintComponent(Graphics g)
{
Image i = null;
try {
i = getImage(new URL(getCodeBase(), "../gifs/Assembled.jpg"));
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("inside JPanel");
g.drawImage(i, 0, 0, this);
//super.paintComponent(g);
}
};
this.setLayout(new BorderLayout());
panel.setSize(500,500);
add(panel, BorderLayout.CENTER);
addMouseListener(this);
//repaint();
}
我编辑了代码,但仍然没有任何效果。图像找到并加载得很好,但除非我主动重新调整小程序的大小,否则它不会显示。换句话说,图像仅在调整大小时显示,其他时间不显示。现在是什么原因造成的?哦,它只有在我删除对 supper.paintComponent(g); 的调用时才会显示。
哦,你的链接并没有帮助我看到我在发布之前是如何尝试答案的。
【问题讨论】:
-
“我知道并且已经阅读了 4 或 5 个相同的问题” 哪 4 个或 5 个?我的意思是链接。在过去的 72 小时内,我必须至少回答过两次这个问题。
-
“我在小程序中添加了一个按钮以查看它是否显示,但实际上它不会显示,除非我将鼠标悬停在它上面或重新调整窗口大小。” 哦,对了,另一个不同的问题。将
repaint();替换为validate(); -
“我喜欢你在之后投票否决这个问题……” 垃圾!只是为了证明这一点-在这里,让我投反对票。祝你好运。您刚刚失去了小程序排名第一的回答者的帮助。
-
在这个论坛和其他论坛上已经多次询问并回答了同样的问题,即无法正确找到小程序的图像文件。除了您还尝试从 paintComponent 方法中读取图像之外,您的方法没有什么不同,这是永远不应该做的事情。