gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:47:09 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com