矩形没有显示在java中

矩形没有显示在java中,java,swing,awt,Java,Swing,Awt,我试图在我的JPanel上显示一个矩形,但当我运行它时,它不起作用。我的canvas类中的代码是: public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.BLACK); g.fillRect(80, 350, 400, 250); } 根据以上代码,面板的大小需要为480 x 600,否则矩形无法完全显示在面板上 进行自定义绘制时,还需要重写类的getPre

我试图在我的JPanel上显示一个矩形,但当我运行它时,它不起作用。我的canvas类中的代码是:

public void paintComponent(Graphics g)
{
    super.paintComponent(g);

    g.setColor(Color.BLACK);
    g.fillRect(80, 350, 400, 250);
}
根据以上代码,面板的大小需要为480 x 600,否则矩形无法完全显示在面板上

进行自定义绘制时,还需要重写类的getPreferredSize方法以返回所需的面板大小,否则大小可能为0,0,具体取决于使用的布局管理器,因此无需绘制任何内容


阅读Swing教程中的部分,了解更多信息和工作示例。

如果您调用super.paintcomponent;在方法的末尾而不是开头?有很多方法可以解释为什么这段代码会失败。忘记添加画布,方法没有被触发,元素非常小,被其他组件覆盖。。。你真的需要粘贴更多的代码才能解决这个问题,否则我们就是在暗中猜测:在提问时发布一个正确的答案。我们不知道框架上如何使用面板的上下文。我最好的猜测是面板的大小是0,0,因此不能在该空间中绘制矩形。@MickMnemonic,调用uper.paintComponentg作为第一条语句的目的是确保绘制组件的背景,以便有一个干净的背景进行绘制。如果在方法末尾添加该语句,则只需在任何自定义绘制上绘制,剩下的就是背景。@camickr,我已经使用Swing有一段时间了,但这取决于组件的不透明度,对吗?
g.fillRect(80, 350, 400, 250);