JScrollPane视口大小

时间:2014-01-09 11:51:29

标签: java swing size jscrollpane baduk

我正在尝试将hist(HistoryPanel扩展JPanel)作为JScrollPane的视口histScroll。问题是水平滚动条没有显示,除非我强制它显示滚动条策略(在下面的代码中),即使我强制它,它也无处滚动。问题是HistoryPanel的大小拒绝水平增加。我尝试了不同的方法设置hist的大小,但它继续保持水平固定的大小。然而,垂直方向,它完美地工作。我不明白这是什么问题。

public SuperPanel(GoPanel panel)
{
    super(new BorderLayout());
    setFocusable(false);
    score = new ScorePanel();
    go = panel;
    go.scorePanel = score;
    score.setPreferredSize(new Dimension(panel.getWidth(), 20));
    hist = new HistoryPanel(go);
    hist.setPreferredSize(new Dimension(panel.getWidth()*20, 100*5));
    //hist.setMinimumSize(new Dimension(panel.getWidth()*20, 100*5));
    //hist.setSize(new Dimension(panel.getWidth()*20, 100*5));
    go.histPanel = hist;
    histScroll = new JScrollPane(hist, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    histScroll.setPreferredSize(new Dimension(panel.getWidth(), 100));
    add(score, "North");
    add(panel, "Center");
    add(histScroll, "South");
}

我可以向下滚动我想要的所有内容,但我无法向右滚动。这是一个很大的问题,因为它会切断一些图像,在这个程序中,水平滚动实际上比垂直滚动更重要。

enter image description here

1 个答案:

答案 0 :(得分:1)

您无需将首选大小设置为添加到JScrollPane的组件,因为它不可滚动,只需删除下一行:

hist.setPreferredSize(new Dimension(panel.getWidth()*20, 100*5));

另请阅读next post有关设置组件大小的信息。