Dip*_*hra 3 java swing jpanel paintcomponent
我正在尝试制作一个小型油漆程序.我绘制在对象JPanel这是对的顶部JFrame(我使用的Netbeans 6.9).我有一些基本功能,如font,line和fillRectangle.我正在使用标准方法绘制哪个要覆盖paintComponent().
class .... extends JPanel
{
@Override
void paintComponents(Graphics g)
{
.......
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我绘制一个文本时,在一个区域上划线然后它被绘制在它后面而不是它上面.基本上我想在之前绘制的所有其他对象之上绘制对象JPanel.我真的不想切换到其他类型的分层窗格.一个非常天真的方法是撤消每个对象并以相反的顺序绘制它们(最后一个).
你需要覆盖paintComponent(Graphics g),不要忘记打电话super.paintComponent(Graphics g);
class .... extends JPanel
{
@Override
protected void paintComponent(Graphics g)
{
super.paintComponent(g);//honor paintComponent an call super to draw other components that were added to the JPanel
.......
}
}
Run Code Online (Sandbox Code Playgroud)
您可能还需要重写getPreferredSize(..)的JPanel并返回相应的尺寸,以便JPanel将是可见的:
class .... extends JPanel
{
@Override
public Dimension getPreferredSize()
{
return new Dimension(300,300);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
根据您正在做的事情,您可能还需要查看GlassPane,它允许您在整个JFrame窗口上设置透明窗格并且也可以绘制,这将导致图形被绘制在所有其他窗口之上,如下所示:
