JScrollPane不会滚动 - Java桌面应用程序

时间:2014-01-12 19:12:10

标签: java swing jscrollpane

所以我正在开发一个应用程序。我有一个很大的问题,我知道我可能会忽略一些愚蠢的东西,但我的scollpanes不会滚动。有人可以查看下面的代码并告诉我我做错了吗?

rotationPanel = new JPanel();
rotationPanel.setLayout(null);
rotationLabels = new JLabel[countStarters(team)];
resetXY(5,5);
for(int i = 0; i < countStarters(team); i++){
    rotationLabels[i] = new JLabel(team.rotation.get(i).getName());
    rotationLabels[i].setForeground(Color.BLACK);
    addComp(rotationLabels[i], rotationPanel, labelX, labelY, labelSize);
    labelY += 25;
}

//Other Code in between

rotationBar = new JScrollPane(rotationPanel);
rotationBar.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
rotationBar.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
rotationBar.setPreferredSize(new Dimension(520, 150));
addComp(rotationBar, this, 15, 75, new Dimension(520, 150));

//addComp method:
public void addComp(JComponent comp, JComponent panel, int xPos, int yPos, Dimension size){
    comp.setLocation(xPos,yPos);
    comp.setSize(size);
    panel.add(comp);
}

resetXY()方法只设置组件的x和y位置

任何帮助将不胜感激

干杯, 戴夫

2 个答案:

答案 0 :(得分:1)

JScrollPane使用组件preferredSize或实现Scrollable#getPreferredScrollableViewportSize来确定滚动窗格及其视图端口的大小。滚动窗格的视口较大时,将显示滚动条

Swing API的设计是围绕布局管理器的使用而设计的,选择不使用会导致问题和其他工作无法解决。

布局管理器可帮助您解决系统之间的差异,包括字体渲染,DPI,屏幕尺寸和渲染管道等。

答案 1 :(得分:0)

我认为您的JPanel需要设置其大小,否则它会缩小以适应JScrollPane。