所以我正在开发一个应用程序。我有一个很大的问题,我知道我可能会忽略一些愚蠢的东西,但我的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位置
任何帮助将不胜感激
干杯, 戴夫
答案 0 :(得分:1)
JScrollPane
使用组件preferredSize或实现Scrollable#getPreferredScrollableViewportSize
来确定滚动窗格及其视图端口的大小。滚动窗格的视口较大时,将显示滚动条
Swing API的设计是围绕布局管理器的使用而设计的,选择不使用会导致问题和其他工作无法解决。
布局管理器可帮助您解决系统之间的差异,包括字体渲染,DPI,屏幕尺寸和渲染管道等。
答案 1 :(得分:0)
我认为您的JPanel需要设置其大小,否则它会缩小以适应JScrollPane。