如何在Java中使用JScrollPane
如何在下面给出的代码中获得JList组件周围的滚动条?它似乎不能正常工作:(如何在Java中使用JScrollPane,java,swing,scroll,jscrollpane,Java,Swing,Scroll,Jscrollpane,如何在下面给出的代码中获得JList组件周围的滚动条?它似乎不能正常工作:( 听着,我可能没有回答你需要什么,因为我不记得有多少swing布局。我很久以前就不使用它了 但是在您的JPanel上删除设置布局(我记得)它可以使用以下代码: public JButtonO() { super("the button"); this.setSize(400, 200); // Create a panel with a borderlayout JPanel jpane
听着,我可能没有回答你需要什么,因为我不记得有多少swing布局。我很久以前就不使用它了 但是在您的JPanel上删除设置布局(我记得)它可以使用以下代码:
public JButtonO() {
super("the button");
this.setSize(400, 200);
// Create a panel with a borderlayout
JPanel jpanel = new JPanel(new BorderLayout());
JLabel label = new JLabel("Output Items:");
label.setAlignmentX(1);
label.setAlignmentY(1);
// Add Label to top of layout
jpanel.add(label, BorderLayout.NORTH);
JList conList = new JList(values);
conList.setVisibleRowCount(3);
JScrollPane scroller = new JScrollPane(conList);
//AddScroll to center
jpanel.add(scroller);
//Add Panel to JFrame
this.add(jpanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
我认为问题在于JPanel的默认布局管理器。由于它的工作方式,您的卷轴“srink”不足以创建卷轴
希望它有帮助,即使没有太多的解释
事实上:在我发布答案后,我看到了您的错误。现在我可以解释错误所在。您已经在JScrollPane中添加了您的JList:
JScrollPane scroller = new JScrollPane(conList);
但在那之后,你把它放在JPanel中:
panel.add(conList);
这将更改yout JList的显示位置,并让JScroll再次清空。如果没有组件,它将以0x0大小显示,并且不会绘制(即使在那里)
现在我想我帮了你的忙。听着,我可能没有回答你需要什么,因为我不记得有多少swing布局。我很久以前就不使用它了 但是在您的JPanel上删除设置布局(我记得)它可以使用以下代码:
public JButtonO() {
super("the button");
this.setSize(400, 200);
// Create a panel with a borderlayout
JPanel jpanel = new JPanel(new BorderLayout());
JLabel label = new JLabel("Output Items:");
label.setAlignmentX(1);
label.setAlignmentY(1);
// Add Label to top of layout
jpanel.add(label, BorderLayout.NORTH);
JList conList = new JList(values);
conList.setVisibleRowCount(3);
JScrollPane scroller = new JScrollPane(conList);
//AddScroll to center
jpanel.add(scroller);
//Add Panel to JFrame
this.add(jpanel);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
我认为问题在于JPanel的默认布局管理器。由于它的工作方式,您的卷轴“srink”不足以创建卷轴
希望它有帮助,即使没有太多的解释
事实上:在我发布答案后,我看到了您的错误。现在我可以解释错误所在。您已经在JScrollPane中添加了您的JList:
JScrollPane scroller = new JScrollPane(conList);
但在那之后,你把它放在JPanel中:
panel.add(conList);
这将更改yout JList的显示位置,并让JScroll再次清空。如果没有组件,它将以0x0大小显示,并且不会绘制(即使在那里)
现在我想我帮助了=D将包含JList
conList
的JScrollPane滚动条添加到JPanel面板就足够了。
错误在于您正在第二次添加JList
JScrollPane scroller = new JScrollPane(conList);
panel.add(label);
panel.add(scroller);
panel.add(conList); // <---THIS LINE SHOULD BE DELETED...
JScrollPane scroller=新的JScrollPane(conList);
面板。添加(标签);
面板。添加(滚动条);
panel.add(conList);//将包含JListconList
的JScrollPane滚动条添加到JPanel面板就足够了。
错误在于您正在第二次添加JList
JScrollPane scroller = new JScrollPane(conList);
panel.add(label);
panel.add(scroller);
panel.add(conList); // <---THIS LINE SHOULD BE DELETED...
JScrollPane scroller=新的JScrollPane(conList);
面板。添加(标签);
面板。添加(滚动条);
panel.add(conList);//JScrollPane
具有称为滚动条策略的设置,这些设置说明何时显示滚动条。您可以使用构造函数或通过调用setVerticalScrollBarPolicy()
和setHorizontalScrollBarPolicy()
来设置滚动条策略。默认策略为“根据需要”,这意味着只有当组件太大而无法显示整个组件时,才会显示滚动条。因此,如果您的列表位于窗口内,则滚动条将不可见,但当您使用鼠标缩小窗口时,滚动条将变为可见。您可以将一个或两个策略更改为“始终”如果需要,使用相应的常量使滚动条始终可见。JScrollPane
具有称为滚动条策略的设置,这些设置说明何时显示滚动条。您可以使用构造函数或调用setVerticalScrollBarPolicy()来设置它们
和设置水平滚动条策略()
。默认策略为“根据需要”,这意味着只有当组件太大而无法显示整个组件时,才会显示滚动条。因此,如果您的列表位于窗口内,则滚动条将不可见,但当您使用鼠标缩小窗口时,滚动条将变为可见。您可以将一个或两个策略更改为“始终”使用相应的常量来创建滚动条如果这是您需要的,则始终可见。要更快获得更好的帮助,请发布一条。要更快获得更好的帮助,请发布一条。kosmulski,非常感谢您的贡献。不过,前两位贡献者帮助我解决了问题。kosmulski,非常感谢您的贡献。不过,前两位贡献者帮助我解决了问题。