gpt4 book ai didi

java - 如何将 JPanel 放在另一个 JPanel 上?

转载 作者:搜寻专家 更新时间:2023-11-01 03:08:16 26 4
gpt4 key购买 nike

我是 java(和一般编程)的新手,我正在尝试制作我的第一个程序。我现在在同一个问题上停留了大约 5 个小时,所以我决定寻求帮助。

基本上我正在尝试制作一个在棋盘上有大约 20 个位置的程序(2d 游戏)。每个位置都是蓝色(玩家 1 拥有)、红色(玩家 2 拥有)或黑色(不属于任何人)。

我要解决这个问题的方法主要是我已经放置了一个调用设置游戏的方法,然后是一个玩游戏的方法。我正在开发设置游戏,基本上它所做的就是创建类 Background 的对象(扩展 JPanel,并覆盖 paintComponent() ) 和 Position 类的 20 个对象(扩展 JPanel,并覆盖 paintComponent())。

到目前为止,我一直坚持将这些 Position 对象放在 Background 对象之上。

当我这样做时:

Background background= new Background();
frame.getContentPane().add(background);
Position position1= new Position;
frame.getContentPane().add(position1);
frame.setVisible(true);

它只显示一个圆圈而没有我希望的背景,如果我先添加位置然后添加背景,我只有背景而没有圆圈。

无论如何,我是 java 的新手,我仍然无法找到自己的出路,但是我已经尝试寻找解决方案,并且我已经找到了许多解决这个问题的不同方法(例如向背景添加位置首先,然后将背景添加到框架等)但我无法使它们中的任何一个工作。

我知道我将它们都添加到框架的方式(很可能)是完全错误的,但我是这样写的所以你会(希望)确保我写的确实向你展示了我的每个类的代码都会在屏幕上绘制一些东西。

PS:我没有在这里复制我的代码,因为大多数变量和方法名称都不是英文的,所以很难阅读,但如果你仍然认为它需要,我会添加它。另外,对于我提出的可能很愚蠢的问题,我深表歉意,但我有点碰壁了,我不知道还能尝试什么。

最佳答案

Basically I'm trying to make a program (2d game) that has about 20 positions on the board. Each position is either blue (owned by player1), red(owned by player2) or black(not owned by anyone).

  1. Painting in Swing默认情况下从不返回 PreferredSize,是必需的 to override getPreferedSize()

  2. JPanel在 API 中实现了 FlowLayout,这 LayoutManager accepting only PreferredSize来自 JComponents添加到这个容器

  3. 上午更改后发布 SSCCE ,简短,可运行,可编译

关于java - 如何将 JPanel 放在另一个 JPanel 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15121331/

26 4 0