java - java中的paint()没有显示

标签 java swing jframe paint graphics2d

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;




class game extends JFrame {
    public game(){   //this is constructor
        JFrame frame  = new JFrame();
        frame.setVisible(true);
        frame.setSize(500,500);
        frame.setTitle("Hello world");
    }

    public void paint(Graphics g){
        Graphics2D g2 = (Graphics2D) g;
        Line2D line = new Line2D.Double(60,90,150,100);
        g2.draw(line);


    }


    public static void main(String args[]) {

        game l = new game();

    }


}

上面的代码是在java中编译的,但是在运行代码时,它只显示框架及其标题,但不包括使用Graphics2D和Line2D绘制的任何线条,所犯的错误是什么? ?显示的框架没有显示任何内容,这是为什么???

最佳答案

首先,您要创建并显示一个 JFrame,它不是 game 的实例,因此它不可能绘制 中的内容。 game 的 Paint 方法。

无论如何,您通常不想创建 JFrame 的子类来进行自定义绘画,只需创建 JPanel 的子类,并将其设置为框架。

也不要重写paint,而是重写paintComponent,它是负责绘制当前组件的方法。

您还应该调用 paintComponent 的父方法,以确保所有常规清理正确进行。

按照惯例,类名应以大写字母开头。

最后一件事,仅在添加所有组件后才使框架可见,否则有一天您可能会遇到视觉故障。

把它们放在一起:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;

import javax.swing.JFrame;
import javax.swing.JPanel;

class Game extends JPanel {

    @Override
    public void paintComponent(final Graphics g) {

        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.setColor(Color.BLACK);
        Line2D line = new Line2D.Double(60, 90, 150, 100);
        g2.draw(line);

    }

    public static void main(final String args[]) {

        Game l = new Game();

        JFrame frame = new JFrame();

        frame.setSize(500, 500);
        frame.setTitle("Hello world");

        frame.setContentPane(l);

        frame.setVisible(true);

    }

}

关于java - java中的paint()没有显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53942993/

相关文章:

java - boolean 值无法正确更新,除非您打印它

java - 防止 Swing GUI 在调用既访问 Swing 组件又耗时的方法时无响应

java - 执行 JavaMail 时所有 JFrame 卡住

java - JFrame 仅可调整高度

java - JPanel 布局问题

java - 数组中的随机数

java - JDialog的方法返回null

java - 如何将多个类的图形绘制到单个面板

Java:为什么打包成jar文件的代码会阻止外部类访问?

java - 如何动态解决这个随机按钮实现