Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的GUI程序有什么问题_Java_User Interface - Fatal编程技术网

Java 我的GUI程序有什么问题

Java 我的GUI程序有什么问题,java,user-interface,Java,User Interface,我已经看了这个代码好几个小时了,但不知道出了什么问题。它是从教科书上抄下来的。当我点击run时,只有一个空盒子出现。它应该显示汽车,一个在左上角,一个在右下角。方法paintComponent拼写错误,因此它不会覆盖超类方法。因此,只调用绘制空白框的默认方法 有一种方法可以通过@Override注释避免这种常见的错误。通过将此注释添加到重写超类方法或实现接口方法的所有方法中,如果您键入错误的方法名称,而不是创建难以调试的错误,编译器将因错误而停止: import java.awt.Graphic

我已经看了这个代码好几个小时了,但不知道出了什么问题。它是从教科书上抄下来的。当我点击run时,只有一个空盒子出现。它应该显示汽车,一个在左上角,一个在右下角。

方法
paintComponent
拼写错误,因此它不会覆盖超类方法。因此,只调用绘制空白框的默认方法

有一种方法可以通过
@Override
注释避免这种常见的错误。通过将此注释添加到重写超类方法或实现接口方法的所有方法中,如果您键入错误的方法名称,而不是创建难以调试的错误,编译器将因错误而停止:

import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.Point2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;

public class Car {

private int xLeft;
private int yTop;

public Car(int x, int y){
    xLeft =x;
    yTop=y;
}

public void draw(Graphics2D g2){
    Rectangle body = new Rectangle(xLeft, yTop+10, 60, 10);
    Ellipse2D.Double frontTire= new Ellipse2D.Double(xLeft+10, yTop+20, 10,     10);
     Ellipse2D.Double rearTire= new     Ellipse2D.Double(xLeft+40,yTop+20,10,10);
    Point2D.Double r1 = new Point2D.Double(xLeft+10,yTop+10);
    Point2D.Double r2 = new Point2D.Double(xLeft+20,yTop);
    Point2D.Double r3 = new Point2D.Double(xLeft+40,yTop);
    Point2D.Double r4 = new Point2D.Double(xLeft+50,yTop+10);
    Line2D.Double frontWindshield = new  Line2D.Double(r1,r2);
    Line2D.Double roofTop = new  Line2D.Double(r2,r3);
    Line2D.Double rearWindshield = new  Line2D.Double(r3,r4);

    g2.draw(body);
    g2.draw(frontTire);
    g2.draw(rearTire);
    g2.draw(frontWindshield);
    g2.draw(roofTop);
    g2.draw(rearWindshield);
 }
}

import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JComponent;

public class CarComponent extends  JComponent {
public void paintCompnent(Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    Car car1 = new Car(0,0);
     int x = getWidth()-60;
     int y = getHeight()-30;

     Car car2 = new Car(x,y);
     car1.draw(g2);
     car2.draw(g2);
 }
}

import javax.swing.JFrame;
public class CarViewer {

     public static void main(String[] args) {
    JFrame frame = new JFrame();
    frame.setSize(400,500);
    frame.setTitle("Two Cars");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    CarComponent component = new CarComponent();
    frame.add(component);

    frame.setVisible(true);
    }

 }

paintComponent
重命名为
paintComponent
谢谢!你是个天才!
@Override
public void paintComponent(Graphics g){
    // code here
}