Java Fillova不会填充窗口
**请随时提供有关流程的反馈。也许有更好的方法来完成我正在做的事情,我只是没有意识到 我有一个扩展JPanel的游戏类。在Java Fillova不会填充窗口,java,swing,jpanel,render,Java,Swing,Jpanel,Render,**请随时提供有关流程的反馈。也许有更好的方法来完成我正在做的事情,我只是没有意识到 我有一个扩展JPanel的游戏类。在paintComponent()方法中,它根据游戏状态(菜单)呈现不同的类。只有欢迎屏幕在整个窗口中绘制。即使我在640x480窗口上手动指定(0,0,1000,1000)的坐标,其他的也不会填充窗口 public void paintComponent(Graphics g) { super.paintComponent(g); if (state ==
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()
行下列出了更多具有相同逻辑的状态
前两种方法的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);
}
在SelectPosition屏幕期间,屏幕底部有一条大约50像素高的红线
如果你需要更多信息,请告诉我。我试图只共享相关的行
非常感谢您的帮助。我们不熟悉您的大部分代码、逻辑和程序结构,您可能希望创建并发布一个,让我们亲身体验您的体验。但在我看来,您真正想要做的似乎是基于状态交换视图,例如可以使用CardLayout来完成。我们不熟悉您的大部分代码、逻辑和程序结构,您可能希望创建并发布一个,让我们亲身体验您的体验。但在我看来,您真正想做的似乎是基于状态交换视图,例如可以使用CardLayout来完成代码>?感谢您的快速响应。当前的颜色只是为了帮助我确定窗口是否按预期变化。我更新了JPanel逻辑以使用setBackground(Color.[Color])。同样的问题仍然存在于窗口底部的彩色条上。我不知道问题出在哪里。paintComponent(Graphics g)方法中还有其他内容吗?也许你需要使用这个:。(我真的不知道如何使用它)paintComponent方法中没有其他内容。我的游戏类扩展了JPanel并实现了Runnable。run方法计算帧并每秒调用30次更新方法。更新方法正在调用repaint。为什么不使用
setBackground(c色)代码>?感谢您的快速响应。当前的颜色只是为了帮助我确定窗口是否按预期变化。我更新了JPanel逻辑以使用setBackground(Color.[Color])。同样的问题仍然存在于窗口底部的彩色条上。我不知道问题出在哪里。paintComponent(Graphics g)方法中还有其他内容吗?也许你需要使用这个:。(我真的不知道如何使用它)paintComponent方法中没有其他内容。我的游戏类扩展了JPanel并实现了Runnable。run方法计算帧并每秒调用30次更新方法。更新方法正在调用重新绘制。谢谢您的建议。关于sscce,你是对的。我从来都不知道我的例子中应该包括什么,应该省略什么。我已经研究过卡片布局,这听起来和我想要的很接近。我试试看。谢谢,谢谢你的建议。关于sscce,你是对的。我从来都不知道我的例子中应该包括什么,应该省略什么。我已经研究过卡片布局,这听起来和我想要的很接近。我试试看。非常感谢。