显示扩展JScrollPane的类

时间:2013-11-24 03:27:52

标签: java swing user-interface jscrollpane

我对Swing和GUI编程一般都比较新,所以我可能在这里犯了一些非常简单的错误,但是:

我有一个名为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的类时遇到问题。

如果需要更多信息,我很乐意添加它。

1 个答案:

答案 0 :(得分:3)

不要扩展JScrollPane,也不要在滚动窗格中添加任何新功能。只需创建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 );