如何在下面给出的代码中获取我的JList组件的滚动?它似乎无法正常工作:(
public class JButtonO extends JFrame{
String[] values = {"henry", "Michael","Uche","John","Ullan","Nelly",
"Ime","Lekan","Austine","jussi","Ossi","Imam","Empo","Austine","Becky",
"Scholar","Ruth", "Anny"};
public JButtonO()
{
super("the button");
this.setSize(400,200);
JPanel panel = new JPanel();
JLabel label = new JLabel("Output Items:");
label.setAlignmentX(1);
label.setAlignmentY(1);
JList conList = new JList(values);
conList.setVisibleRowCount(3);
JScrollPane scroller = new JScrollPane(conList);
panel.add(label);
panel.add(scroller);
panel.add(conList);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.add(panel);
this.setVisible(true);
}
答案 0 :(得分:4)
将包含JList scroller
的JScrollPane conList
添加到JPanel panel
就足够了。
错误是你第二次添加JList。
JScrollPane scroller = new JScrollPane(conList);
panel.add(label);
panel.add(scroller);
panel.add(conList); // <---THIS LINE SHOULD BE DELETED...
答案 1 :(得分:2)
看,我可能没有回答你需要的东西,因为我不记得很多摆动布局。我很久以前不和它一起工作......
但是在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的默认布局。由于它的工作原理,你的卷轴没有“收缩”到足以创建卷轴......
希望它有所帮助,即使没有太多解释......
实际上:在我发布答案后,我看到了你的错误。现在我可以解释什么是错的。您已经在JScrollPane中添加了JList:
JScrollPane scroller = new JScrollPane(conList);
但之后你把它放在JPanel里面了:
panel.add(conList);
这将更改您将显示JList的位置,并让JScroll再次为空。没有组件,它将显示大小为0x0,不会绘制(即使在那里)。
现在我想我帮了= D
答案 2 :(得分:2)
JScrollPane
具有称为滚动条策略的设置,用于说明何时显示滚动条。您可以使用JScrolPane(Component,int,int)构造函数设置它们,也可以通过调用setVerticalScrollBarPolicy()
和setHorizontalScrollBarPolicy()
来设置它们。默认策略是“根据需要”,这意味着仅当组件太大而无法显示整体时才会显示滚动条。因此,如果您的列表适合窗口内部,则滚动条将不可见,但在您例如使用鼠标缩小窗口。您可以使用相应的常量将一个或两个策略更改为“always”,以使滚动条始终可见(如果这是您需要的。)