【问题标题】:Paint in Swing not working在 Swing 中绘画不起作用
【发布时间】:2014-08-18 06:40:26
【问题描述】:

为什么这不起作用?它向我显示了 GUI,但没有显示油漆。我如何将其更改为两个类?

import java.awt.Graphics;
import javax.swing.JFrame;

public class runpaintgui extends JFrame{    

    public static void main(String[] args){
        JFrame frame = new JFrame();
        frame.setSize(5000,2000);
        frame.setResizable(false);
        frame.setTitle("game");
        frame.setVisible(true);    
    }

    public void paint(Graphics g){
        super.paint(g);
        g.drawString("adsf",40,45);
        g.draw3DRect(50, 30, 600, 700, true);   

        repaint();
    }    
}

【问题讨论】:

  • “如何将其更改为两个类?”是什么意思
  • 永远不要调用 repaint();在paint()/paintComponent()中,因为可以创建无限循环
  • 尝试扩展您的面板并像post 说的那样覆盖paintComponent() 方法。
  • "frame.setSize(5000,2000);" 你真的有一个 10 兆像素的显示器吗?这是什么,Jumbotron?
  • "runpaintgui";使用一些命名规则是一个好习惯。可以参考java.about.com/od/javasyntax/a/nameconventions.htm

标签: java swing jframe paint repaint


【解决方案1】:

您正在此行中创建通用 JFrame

JFrame frame = new JFrame();

你想做的大概是:

JFrame frame = new runpaintgui();

然后您的paint() 方法被调用。

【讨论】:

    【解决方案2】:

    您必须实例化您的类,而不是 JFrame 类。

    改变:

    JFrame frame = new JFrame();
    

    runpaintgui frame = new runpaintgui();
    

    然后您的paint() 方法被调用。

    并且不要在paint 中调用repaint()。因为repaint() 调用paint

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 2012-04-13
      • 2011-11-25
      • 2014-06-11
      • 1970-01-01
      相关资源
      最近更新 更多