0

好吧,他是我的问题:

我正在尝试将使用 java 图形的网格绘制到 JFrame 中。但是当我这样做时,网格会覆盖 JFrame 的组件(JTextFields、按钮等),我尝试在绘制方法的末尾写入“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);
                    }

            }

感谢你们!

4

1 回答 1

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

不建议覆盖paint顶级容器的方法,例如JFrame. 它们包含许多可能会干扰您的绘画的子组件,并且很容易简单地搞砸绘画过程。

于 2013-02-20T01:53:23.487 回答