JFrame和Graphic';s深度(Java)

JFrame和Graphic';s深度(Java),java,swing,graphics,jframe,paint,Java,Swing,Graphics,Jframe,Paint,他是我的问题: 我正在尝试使用java图形在JFrame中绘制网格。但是当我这样做时,网格覆盖了JFrame的组件(JTextFields、button等),我尝试在paint方法的末尾写“super.paint(g)”,但是当我这样做时,网格没有出现 他是代码: public void paint(Graphics g){ super.paint(g); g.setColor(Color.P

他是我的问题:

我正在尝试使用java图形在JFrame中绘制网格。但是当我这样做时,网格覆盖了JFrame的组件(JTextFields、button等),我尝试在paint方法的末尾写“super.paint(g)”,但是当我这样做时,网格没有出现

他是代码:

            public void paint(Graphics g){
                    super.paint(g);
                    g.setColor(Color.PINK);
                    g.drawLine(0, 240, 640, 240);
                    g.drawLine(320,0,320,480);
                    g.setColor(Color.GRAY);
                    for (int i=1; i<24; i++){
                        g.drawLine(0, i*20, 640, i*20);
                    }

            }
public void绘制(图形g){
超级油漆(g);
g、 setColor(颜色为粉红色);
g、 抽绳(0、240、640、240);
g、 抽绳(320,0320480);
g、 setColor(颜色为灰色);
对于(int i=1;i
  • 自己创建一个自定义组件(从类似
    JPanel
    的东西扩展而来)。覆盖它的
    paintComponent
    方法,并在那里绘制网格(不要忘记调用
    super.paintComponent
  • 创建
    JFrame
    时,将面板设置为该框架的内容窗格-即
    frame.setContentPane(new GridPane())
  • 继续按正常方式向框架添加构件
  • 不建议覆盖顶级容器(如
    JFrame
    )的
    paint
    方法。它们包含许多子组件,可能会干扰您的绘制,并且很容易将绘制过程搞糟

  • 自己创建一个自定义组件(从类似
    JPanel
    的东西扩展而来)。覆盖它的
    paintComponent
    方法,并在那里绘制网格(不要忘记调用
    super.paintComponent
  • 创建
    JFrame
    时,将面板设置为该框架的内容窗格-即
    frame.setContentPane(new GridPane())
  • 继续按正常方式向框架添加构件

  • 不建议覆盖顶级容器(如
    JFrame
    )的
    paint
    方法。它们包含大量子组件,可能会干扰您的绘制,很容易使绘制过程出错。

    1)不要扩展
    JFrame
    2)在
    JComponent
    JPanel
    中进行自定义绘制。3)对于这些组件,覆盖
    paintComponent(Graphics)
    (或者替代2和3,将渲染绘制到
    BufferedImage
    )4)为了更快地获得更好的帮助,发布一个。1)不要扩展
    JFrame
    2)在
    JComponent
    JPanel
    中进行自定义绘制。3)对于这些组件,覆盖
    paintComponent(Graphics)
    (或者替代2&3,将渲染绘制到
    缓冲图像中)4)为了更快地获得更好的帮助,请发布一条。谢谢@MadProgrammer!!我明白了,但现在,我不知道为什么只显示网格D:抱歉打扰了,他是代码:[link]()再次感谢!在向框架中添加任何内容之前,必须先设置内容窗格。更改内容窗格会删除旧的内容并替换为新的内容,同时保留所有先前存在的组件。谢谢@MadProgrammer!!我明白了,但现在,我不知道为什么只显示网格D:不好意思,他是代码:[link]()再次感谢!在向框架中添加任何内容之前,必须先设置内容窗格。更改内容窗格会删除旧的内容,并替换为新的内容,同时保留所有先前存在的组件。