Java JScrollPane不在JList上工作

Java JScrollPane不在JList上工作,java,swing,jscrollpane,jlist,Java,Swing,Jscrollpane,Jlist,代码: 并且没有滚动条出现。当物品太多时,它们是隐藏的,我够不到它们。如何解决这个问题?要进一步阐述Michael Ardan的答案,您将JList添加到面板中,而不是JScrollPane。必须将JScrollPane添加到面板中,并且必须将JList添加到滚动窗格中,才能使其正常工作。实际上没有必要使用setBounds或setPreferredSize——把它们去掉。调用setVisibleRowCount方法时,JList会处理所有这些问题。下面是一个滚动窗格工作的示例。如果您仍然有问题

代码:


并且没有滚动条出现。当物品太多时,它们是隐藏的,我够不到它们。如何解决这个问题?

要进一步阐述Michael Ardan的答案,您将JList添加到面板中,而不是JScrollPane。必须将JScrollPane添加到面板中,并且必须将JList添加到滚动窗格中,才能使其正常工作。实际上没有必要使用
setBounds
setPreferredSize
——把它们去掉。调用
setVisibleRowCount
方法时,JList会处理所有这些问题。下面是一个滚动窗格工作的示例。如果您仍然有问题,请将您自己的代码插入此示例,直到它中断。那告诉我们是什么把它弄坏了。如果不是,接受Michael的回答

list1items = new DefaultListModel();
list1items.addElement("-");
list1 = new JList(list1items);
list1.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
list1.setBounds(0,0, 100,100);
JScrollPane list1scr = new JScrollPane(list1);
list1scr.setPreferredSize(new Dimension(20, 20));
list1.setVisibleRowCount(8);
getContentPane().add (list1scr);
getContentPane().add(list1scr);
import java.awt.*;
导入javax.swing.*;
公共类临时扩展JPanel{
公共临时工(){
DefaultListModel list1items=新的DefaultListModel();
列表1项目补遗(“-”);
对于(int i=0;i<200;i++)
清单1项目补遗(“项目”+i);
JList list1=新的JList(列表1项);
list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane list1scr=新的JScrollPane(list1);
列表1.setVisibleRowCount(8);
添加(列表1SCR);
}
公共静态void main(字符串[]args){
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(新的Temp());
frame.pack();
frame.setVisible(true);
}
}

要扩展Michael Ardan的回答,您将JList添加到面板中,而不是JScrollPane。必须将JScrollPane添加到面板中,并且必须将JList添加到滚动窗格中,才能使其正常工作。实际上没有必要使用
setBounds
setPreferredSize
——把它们去掉。调用
setVisibleRowCount
方法时,JList会处理所有这些问题。下面是一个滚动窗格工作的示例。如果您仍然有问题,请将您自己的代码插入此示例,直到它中断。那告诉我们是什么把它弄坏了。如果不是,接受Michael的回答

getContentPane().add(list1scr);
import java.awt.*;
导入javax.swing.*;
公共类临时扩展JPanel{
公共临时工(){
DefaultListModel list1items=新的DefaultListModel();
列表1项目补遗(“-”);
对于(int i=0;i<200;i++)
清单1项目补遗(“项目”+i);
JList list1=新的JList(列表1项);
list1.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane list1scr=新的JScrollPane(list1);
列表1.setVisibleRowCount(8);
添加(列表1SCR);
}
公共静态void main(字符串[]args){
JFrame=新JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(新的Temp());
frame.pack();
frame.setVisible(true);
}
}

1)要更快地获得更好的帮助,请发布一个。2)
list1.setBounds(0,010010)不要这样做。使用布局。3) 看。4) 
getContentPane()thx,但这些也不起作用。我更新了问题“这些也不行。”第一个问题是。尝试一下。1)为了更快地获得更好的帮助,请发布一条消息。2) 
list1.setBounds(0,010010)不要这样做。使用布局。3) 看。4) 
getContentPane()thx,但这些也不起作用。我更新了问题“这些也不行。”第一个问题是。试试看。+1好的提示:-)但最好快速删除您的评论-一般规则是永远不要对组件进行任何手动大小调整/定位ever@kleopatra看在上帝的份上,有人能告诉我调用setXXXSize()方法会有什么后果吗?@brano88每个
JComponents
都可以返回自己的
PreferredSize
JList
具有可见行的方法,与空的
JPanel
/
JComponent
在Swing中绘制
不会返回任何
维度
JPanel
对于
标准布局管理器
为空)然后必须覆盖
PreferredSize
@brano88:?请发布SSCCE以获得进一步帮助。+1好的提示:-)但最好快速删除您的评论-一般规则是永远不要手动调整/定位组件ever@kleopatra看在上帝的份上,有人能告诉我调用setXXXSize()方法会有什么后果吗?@brano88每个
JComponents
都可以返回自己的
PreferredSize
JList
有可见行的方法,而空的
JPanel
/
JComponent
在Swing中绘制
不会返回任何
维度
JPanel
对于
标准布局管理器
)则必须重写
首选大小
@brano88:?请发布SSCE以获得进一步帮助。