Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.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 我的画师画了一些我没有画的东西';t码_Java_Paintcomponent - Fatal编程技术网

Java 我的画师画了一些我没有画的东西';t码

Java 我的画师画了一些我没有画的东西';t码,java,paintcomponent,Java,Paintcomponent,我做了一个大的水立方,但不知怎么的,在我的JPanel中出现了一个小的灰色方块,看起来像这样。 中间有一个灰色的小方格,我没有画。我如何避免它?这是我的密码: 我的主要意见是: package Main; public class main { public static void main(String[] args) { createWindow window = new createWindow(); } } myFra

我做了一个大的水立方,但不知怎么的,在我的JPanel中出现了一个小的灰色方块,看起来像这样。

中间有一个灰色的小方格,我没有画。我如何避免它?这是我的密码:

我的主要意见是:

package Main;

public class main {
    
    public static void main(String[] args) {
        createWindow window = new createWindow();
        
    }

}

myFrame和myPanel:

package Main;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import Objects.Piece;

public class createWindow extends JFrame {
    
    public myPanel panel;
    
    public createWindow() {
        super();
        panel = new myPanel();
        KeyListener key = new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
                
                
                
            }

            @Override
            public void keyPressed(KeyEvent e) {
                
                
                
            }

            @Override
            public void keyReleased(KeyEvent e) {
                
                keyAction(e.getKeyCode());
                
            }
            public void keyAction(int keycode) {
                switch (keycode) {
                    case KeyEvent.VK_UP:
                        System.out.println("Up");
                        break;
                    case KeyEvent.VK_RIGHT:
                        System.out.println("Right");
                        break;
                    case KeyEvent.VK_DOWN:
                        System.out.println("Down");
                        break;
                    case KeyEvent.VK_LEFT:
                        System.out.println("Left");
                        break;
                }
            }
            
        };
        
        pack();
        add(panel);
        addKeyListener(key);
        setSize(800, 450);
        setResizable(false);
        setLocationRelativeTo(null);
        setVisible(true);
        
    }
    
}

class myPanel extends JPanel {
    public Piece firstP = new Piece(100, 100, 100, 100, new Color(50, 255, 255), "self");
    
    myPanel() {
        super();
        
        setBackground(Color.gray);
        add(firstP);
    }
    
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D)g;
        
        g2d.setColor(firstP.color);
        g2d.fillRect(firstP.x,firstP.y, firstP.width, firstP.height);
    }
    
    
}
我的作品:

package Objects;

import java.awt.*;
import javax.swing.*;

public class Piece extends JPanel {
    
    public int x;
    public int y;
    public int width;
    public int height;
    public Color color;
    public String type;
    
    public Piece(int x, int y, int width, int height, Color color, String type) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.color = color;
        this.type = type;
    }
    
    
}


有人能修改我的代码吗?我是java paint新手,在这里看不到bug…

您的Piece类不应该扩展JPanel,也不应该作为组件添加到GUI中。它应该只是一个逻辑类(非GUI组件)并从
公共类片段extensed JPanel
中删除JPanel,就像这样
公共类片段
,然后您的工件应该消失。我删除了extensed和add(),现在它没有显示任何内容,我该怎么办?我输入了一些错误的东西,这使得主框没有被绘制:)谢谢你的Piece类不应该扩展JPanel,也不应该作为一个组件添加到GUI中。它应该只是一个逻辑类(非GUI组件)并从
公共类扩展JPanel
中删除JPanel,就像这样
公共类扩展JPanel
,然后您的工件应该消失。我删除了扩展和add(),现在它没有显示任何内容,我该怎么办?我输入了一些错误,这使得主框没有被绘制:)谢谢