Java fillOval不会填充窗口

标签 java swing jpanel render

** 也请随时提供有关流程的反馈。可能有更好的方法来完成我正在做的事情,只是我没有意识到。

我有一个扩展 JPanel 的 Game 类。在 paintComponent() 方法中,它根据游戏状态(菜单)呈现不同的类。只有欢迎屏幕覆盖了整个窗口。即使我在 640x480 窗口上手动分配 (0, 0, 1000, 1000) 的坐标,其他的也不会填充窗口。

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

    if (state == State.WELCOME) {

        welcome.render(g);

    } else if (state == State.SELECTPOSITION) {

        selectPosition.render(g);

    } else if (state == State.SELECTSCENARIO) {

        selectScenario.render(g);
...

selectScenario() 行下列出了具有相同逻辑的更多状态。

下面列出了前 2 个方法的 render() 方法:

welcome.render(g)

public void render(Graphics g) {
    g.setColor(Color.red);
    g.fillRect(0, 0, 640, 480);
    g.setColor(Color.white);
    g.drawString("Welcome", 50, 150);
}


selectPosition.render(g)

public void render(Graphics g) {
    g.setColor(Color.blue);
    g.fillRect(0, 0, 1000, 1000);
}

在选择位置屏幕期间,屏幕底部有一条大约 50 像素高的红线。

如果您需要更多信息,请告诉我。我试图只分享相关的台词。

非常感谢任何帮助。

最佳答案

我们不熟悉您的大部分代码、逻辑和程序结构,您可能希望创建并发布 sscce让我们亲 body 验您所经历的一切。但在我看来,您真正想做的是根据状态交换 View ,例如可以使用 CardLayout 来完成。

关于Java fillOval不会填充窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15799295/

相关文章:

java - 为什么 fillRect 命令不会出现在我的 JFrame 上?

java - 了解 HazelCast 中的扩展

java - 创建一个不使用 Math.sqrt 计算数字平方根的程序

java - JComboBox 和 JButton 问题

java - 将两个简单的 JLabel 添加到 jframe

java - JPanel 内的 JPanel 的 JScrollPane

java - 在java中创建一个文件,其目录位于文本文件内

java - Netbeans(Java): 3rd library works but how could I compile it into jar?

java - 每次在java中调用方法时以单个字符串形式检索结果

java - 有没有办法知道 JPanel 是否已完成加载其内容?