【发布时间】:2012-08-24 23:14:34
【问题描述】:
在我的paintComponent() 方法中,我有一个绘制jpanel 背景的drawRect()。但是因为在调用paintComponent() 方法之前jbutton 是在屏幕上绘制的,所以jbutton 被drawRect 挡住了。有谁知道如何解决这一问题?我的猜测是在调用 repaint 之前添加 jbutton,但我不知道该怎么做?
一些代码:
public Frame(){
add(new JButton());
}
public void paintComponent(Graphics g){
super.paintComponent(g);
g.drawRect(0,0,screenwidth,screenheight); //paints the background with a color
//but blocks out the jbutton.
}
【问题讨论】:
-
Frame是否扩展JFrame? -
这确实是个奇怪的代码,因为我同意 Jeffrey 的观点,您似乎正试图为 JFrame 类重写
paintComponent(...)方法,这是不应该发生的。请在您的paintComponent(...)方法之前添加一个@Override。确保您覆盖paintComponent(...)和 notpaintComponents(...),因为它们之间存在大差异。如果您能发布sscce 让我们亲眼看到和体验您的问题,那就太好了。 -
你做错了什么?你怎么修好它的?请注意,发布实际代码而不是无关代码几乎总是更好。
-
@HovercraftFullOfEels 事实上,这不可能发生。
JFrame没有paintComponent方法。 -
艾文:这就是问题所在。当我们还不知道是什么导致了您的主要问题时,我们不能忽略任何错误。这就是为什么发布真实代码几乎总是最好的。
标签: java swing graphics jbutton jcomponent