我对我的JScrollPanes的初学者问题非常肯定。问题是垂直滚动条与封闭面板内的组件重叠(在右侧)。当滚动条与JComboBoxes的下拉位重叠时,它会变得有点痛苦。
我把问题归结为这个小片段 - 我希望它说明了这个问题。
public class ScrollTest extends JFrame
{
public ScrollTest()
{
super("Overlap issues!");
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(100,0));
for(int b=0;b<100;++b)
{
panel.add(new JButton("Small overlap here ->"));
}
JScrollPane scrollpane = new JScrollPane(panel);
add(scrollpane);
pack();
setVisible(true);
}
public static void main(String[] args)
{
new ScrollTest();
}
}
我先看了看,但看不出是否其他人已经解决了这个问题。对不起,如果它是重复的,非常感谢任何帮助,任何人都可以提供像我这样的java-newb!
答案 0 :(得分:4)
问题是JScrollPane的默认设置是使用默认的JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED来布局组件,这反过来又会添加滚动条而不会再次布置组件。
在您的示例中,您知道需要滚动条,因此请将其更改为始终显示滚动条
public class ScrollTest extends JFrame
{
public ScrollTest()
{
super("Overlap issues!");
JPanel panel = new JPanel();
//Insets insets = panel.getInsets();
//insets.set(5, 5, 5, 25);
//insets.set(top, left, bottom, right);
panel.setLayout(new GridLayout(100,0));
for(int b=0;b<100;++b)
{
panel.add(new JButton("Small overlap here ->"));
}
JScrollPane scrollpane = new JScrollPane(panel);
scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
add(scrollpane);
pack();
setVisible(true);
}
public static void main(String[] args)
{
new ScrollTest();
}
}