我遇到了JFrame无法正确绘制的问题。有人可以看看解决方案吗?我尝试过使用BoxLayouts,但它也无法正常工作。在我将鼠标悬停在按钮上之前,按钮不会显示。
它只在一个文件和可执行文件中。
此致
/index.php?option=com_content&view=article&id=article_id
答案 0 :(得分:1)
除了NullPointerException之外,还有很多问题。
您不应直接致电paint
:
Graphics g = getGraphics();
paint(g);
使用repaint();
代替paint(getGraphics());
。
您不应修改传递给Graphics
的{{1}}:
paintComponent
除了你试图绘画的其他组件外,这可能会意外地转移到其他组件上。
而是创建副本:
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(...);
g2.setComposite(...);
您不应该在Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(...);
g2.setComposite(...);
...
// and dispose it at the end of paintComponent
g2.dispose();
:
paintComponent
执行此操作可能会导致重复无限循环,因为如果颜色不同,public void paintBackground()
{
setBackground(Color.WHITE);
}
@Override
public void paintComponent(Graphics g)
{
...
paintBackground();
会重新绘制。
相反,请使用setBackground
或g.fillRect(...)
。
答案 1 :(得分:0)
您的Shape temp
被声明为类字段,但会在public void mouseDragged(MouseEvent e)
中初始化。所以在第一次拖动操作之前它是null,而在temp.draw(g);
中它给出了一个Exception。