我还是比较新的Swing和GUI编程一般,所以我可能做一些非常简单的错误在这里,但:显示类延伸JScrollPane的
我有一个叫TilePanel
类延伸JScrollPane
。这门课的目的是包含我的另一个自定义类,TileMap
,它本身扩展了JPanel
。我遇到的问题是TilePanel
从不显示。
这对我来说显得非常奇怪,因为在创建TilePanel
类之前,我运行了一个测试,在其中使用了正常的JScrollPane
,并将TileMap
添加到它。这通常显示给我,并且我能够成功滚动我的TileMap
。我的TilePanel
类中的代码对JScrollPane
没有什么太大的改变,所以我没有看到为什么这个功能不起作用。
下面是TilePanel
类的代码:
import javax.swing.JScrollPane;
public class TilePanel extends JScrollPane
{
TileMap map;
public TilePanel(int rows, int cols)
{
super(VERTICAL_SCROLLBAR_NEVER, HORIZONTAL_SCROLLBAR_NEVER);
map = new TileMap(rows, cols, 9, 9);
map.addBorder(Tile.EMPTY, 9);
this.add(map);
}
}
TileMap
使用其默认布局GridLayout
,如果影响任何东西。
从我的搜索这里和其他地方,我没有发现任何人有类似的问题,除非我只是非常糟糕的搜索。我发现有几个人在向JScrollPane
本身添加内容时遇到了问题,但没有人遇到问题,显示的是扩展JScrollPane
的类。
如果需要更多信息,我很乐意补充。
我想我找到了答案,我的问题。我显然不能使用.add(JComponent组件),因为它覆盖了视口。我必须使用setViewportView(Jcomponent组件)。 – Aargonian
这就是我在回答中提出的建议。不要创建TilePanel类并使用我建议的代码。 – camickr