![](/img/trans.png)
[英]JscrollPane disappears after adding it to another class which extends to JPanel
[英]Displaying Class Which Extends JScrollPane
我对Swing和GUI编程一般都比较新,所以我可能在这里犯了一些非常简单的错误,但是:
我有一个名为TilePanel
的类,它扩展了JScrollPane
。 这个类的目的是包含我的另一个自定义类TileMap
,它本身扩展了JPanel
。 我TilePanel
的问题是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
的类时遇到问题。
如果需要更多信息,我很乐意添加它。
不要扩展JScrollPane,也不要向scrollpane添加任何新功能。 只需创建TileMap类并将其设置为scrollPane的视口即可。
在您创建TilePanel类的类中,您的代码应该类似于:
//TilePanel panel= new TilePanel(); // not needed.
TileMap map = new TileMap(rows, cols, 9, 9);
map.addBorder(Tile.EMPTY, 9);
JScrollPane scrollPane = new JScrollPane( map );
frame.add( scrollPane );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.