【问题标题】:JPanel won't displayJPanel 不会显示
【发布时间】:2014-01-16 19:09:16
【问题描述】:

我有一个应该启动游戏的课程(使用main()),以及游戏的开始屏幕。具有main() 的类(名为Starter)扩展JFrame,创建一个新的OpeningScreen 类(扩展JPanel),并将其添加到JFrame。

由于某种原因,OpeningScreen 不会被添加到 JFrame。代码:

Starter类:

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

public class Starter extends JFrame {

    public Starter(){

        setSize(500,500);
        setResizable(false);
        setTitle("Ping-Pong Battle");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        OpeningScreen openingS = new OpeningScreen();
        add(openingS);

        setVisible(true);

    }

    public static void main(String[]args){
        Starter starter = new Starter();
    }

}

OpeningScreen类:

import javax.swing.*;

import java.awt.event.*;
import java.awt.*;

public class OpeningScreen extends JPanel {

    public OpeningScreen(){
        setBackground(Color.BLACK);
        setFocusable(true);
            setVisible(true);
    }

    public void paint(Graphics g){

        // Soon code here to be drawn.

    }

    public void startGame(){
        Board board = new Board();
    }

}

有什么问题?谢谢

编辑:OpeningScreen 的构造函数会运行,但不会将背景涂成黑色。此外,尝试在paint() 中绘制东西也行不通。

【问题讨论】:

  • 尝试覆盖 paintComponent(Graphics g) 而不是 paint(Graphics g)
  • 不,同样的问题:\

标签: java swing jpanel


【解决方案1】:

我认为因为您覆盖了paint(),所以没有绘制背景,所以看起来好像没有添加面板。注释掉paint方法会导致窗口对我来说是黑色的。
另外,用paint方法绘制对我有用,也许你的颜色设置为黑色,所以它不会显示在黑色背景上?在绘制之前尝试 g.setColor(Color.white)。

【讨论】:

  • 我注释掉了 paint() 方法,它工作(黑色背景)。但是现在我想在面板中绘制,我需要再次添加paint()方法,然后同样的问题。知道如何解决这个问题吗?
  • 尝试在paint方法中添加super.paint(g),然后再做其他任何事情。
  • @Josh 查看我的回答。两者都可以。
【解决方案2】:

您的问题源于在您的 OpeningScreen 类中覆盖 paint。背景没有被画出来,因为你从来没有画过它!致电super.paint(g) 解决此问题。

但是,它是generally recommended to use paintComponent() instead of paint().,只需将您的代码移动到paintComponent

此方法正确绘制黑色背景和红色方块:

@Override
public void paintComponent(Graphics g){

    super.paintComponent(g);
    g.fillRect(100, 100, 100, 100);
}

【讨论】:

  • 好吧,忘了 super.paint(g)。非常感谢:)
  • 通常是 recommended 覆盖 paintComponent 而不是 paint 作为执行自定义绘画的首选方式...
猜你喜欢
  • 2016-08-29
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
  • 2012-08-08
  • 2021-06-07
相关资源
最近更新 更多