![](/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.