Java 为什么不';我的图形没有显示吗?

Java 为什么不';我的图形没有显示吗?,java,swing,paintcomponent,Java,Swing,Paintcomponent,我是一名业余java程序员,我想制作一款类似于《太空入侵者》的游戏 当我试图通过面板添加paintComponent图形时,我想知道为什么我的框架是空白的,但当我定期添加代码时,它会显示所有结果 以下是添加图形时没有面板且没有冲突的my objects类: package SS; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.awt.event.KeyEvent; import java

我是一名业余java程序员,我想制作一款类似于《太空入侵者》的游戏

当我试图通过面板添加paintComponent图形时,我想知道为什么我的框架是空白的,但当我定期添加代码时,它会显示所有结果

以下是添加图形时没有面板且没有冲突的my objects类:

package SS;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.Serializable;
import java.util.*;
public class objects extends JPanel{
private int rand1, rand2, y;
int x=0;
Random rand = new Random();
public class picture extends JPanel{
@Override
public void paintComponent(Graphics g){
    super.paintComponent(g);
    this.setBackground(Color.BLACK);
    for (int c=0;c<=1000;c++){
        g.setColor(Color.yellow);
        rand1=rand.nextInt(1920);
        rand2=rand.nextInt(720);
        g.drawOval(rand1, rand2, 1, 1);}
    g.setColor(Color.MAGENTA);
    g.fillRect(1920/2-x,720-100+y, 50, 50);
        }
    }
}
对于我在这篇文章中所说的一切,我愿意接受批评和恰当的措辞

重复我的意思: 我想将我用paintComponent方法制作的图形添加到列为jp的jpanel中,然后将该jpanel添加到mainFrame类中的框架中


如果我错过了什么,也很抱歉,这是我在StackOverflow的第一篇帖子

在第二个示例中,您将
picture
面板添加到
objects
构造函数中的新
jp
面板中,但该新面板不会添加到
objects
本身。尝试在
objects
constructor的末尾添加以下行:
this.add(jp)

有关如何指定首选尺寸的更新:

public class picture extends JPanel{

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(500, 500);
            }  
...
}

我试图通过文本框格式添加代码,但它不允许我添加,所以我截图。很抱歉欢迎来到StackOverflow!不鼓励发布代码的图像,因为链接可能会在将来消亡,并且通常会使它们更难阅读。如果您可以直接使用代码块在答案中发布代码,这将是一件好事。编辑:刚刚看到你的评论上面。尝试时会出现什么错误?将来,您必须将代码显示为代码,而不是图像。我们无法将图像复制到IDE并运行它们。如果网站告诉你代码太大,那么就缩短它,但要确保它仍然为我们编译和运行。大家好,管理员们,我现在正在更正我在帖子中的错误,感谢罗马大学的领导伸出了手,但这只是我不清楚的方向,我明白了。谢谢非常感谢你!图形显示在帧中,但在帧的中间顶部是一个非常小的方块。如果我需要进一步的帮助,我会把它寄出去。再次感谢大家!由于您正在将自定义绘制逻辑添加到
图片
面板,并且没有添加任何其他Swing组件,因此布局管理器不知道面板需要制作多大。尝试覆盖
getPreferredSize
,并指定您想要的大小。查看我的更新答案。您好,我已经尝试了这个,它似乎修复了我的解决方案。非常感谢你!
package SS;
import javax.swing.JFrame;
public class mainframe {
    public static void main(String[] args){
        JFrame mainFrame = new JFrame();
        mainFrame.setBounds(0, 0, 1920, 720);
        mainFrame.setResizable(false);
        mainFrame.getContentPane().add(new objects());
        mainFrame.setDefaultCloseOperation(mainFrame.EXIT_ON_CLOSE);
        mainFrame.setVisible(true);
    }
}
public class picture extends JPanel{

            @Override
            public Dimension getPreferredSize() {
                return new Dimension(500, 500);
            }  
...
}