Java 将JScrollPane添加到我的JList

Java 将JScrollPane添加到我的JList,java,swing,jlist,scrollpane,Java,Swing,Jlist,Scrollpane,我在获取jlist上的垂直滚动条时遇到问题 listInfo是一个包含数据的向量。 右面板是位于框架东侧的面板 如果我只添加JList,它就会出现。如果添加滚动窗格,则不会发生任何事情 data = new JList(listInfor); data.setVisible(true); data.setVisibleRowCount(5); data.setPreferredSize(new Dimension(400,400))

我在获取jlist上的垂直滚动条时遇到问题

listInfo是一个包含数据的向量。 右面板是位于框架东侧的面板

如果我只添加JList,它就会出现。如果添加滚动窗格,则不会发生任何事情

        data = new JList(listInfor);
        data.setVisible(true);
        data.setVisibleRowCount(5);
        data.setPreferredSize(new Dimension(400,400));
        data.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        JScrollPane scroll = new JScrollPane(data);
        rightPanel.add(scroll);

出于某种原因,这是行不通的

不要设置
JList
的首选大小,这会阻止它根据列表的内容计算列表的大小,这意味着它永远不会超过您提供的首选大小,也就是说它永远不会显示任何滚动条

相反,使用和的组合来调整
JList
计算首选大小的方式


如果你真的想要更多的控制,你应该看看
JList
实现的界面,但即使如此,我还是要小心不要设置
JList
的首选大小,这会阻止它根据列表的内容计算列表的大小,这意味着它永远不会超过您提供的首选大小,也就是说它永远不会显示任何滚动条

相反,使用和的组合来调整
JList
计算首选大小的方式


如果你真的想要更多的控制,你应该看看
JList
实现的界面,但即使如此,我还是要小心不要设置
JList
的首选大小,这会阻止它根据列表的内容计算列表的大小,这意味着它永远不会超过您提供的首选大小,也就是说它永远不会显示任何滚动条

相反,使用和的组合来调整
JList
计算首选大小的方式


如果你真的想要更多的控制,你应该看看
JList
实现的界面,但即使如此,我还是要小心不要设置
JList
的首选大小,这会阻止它根据列表的内容计算列表的大小,这意味着它永远不会超过您提供的首选大小,也就是说它永远不会显示任何滚动条

相反,使用和的组合来调整
JList
计算首选大小的方式

如果您真的想要更多的控制,您应该看看
JList
实现的接口,但即使如此,我还是会小心地测试它

public static void main(String[] args) {

            String[] ar = {"one", "two", "three"};
            JList data = new JList(ar);

            data.setVisible(true);
            data.setVisibleRowCount(5);
            data.setPreferredSize(new Dimension(400,400));
            data.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

            JScrollPane scroll = new JScrollPane(data);

            JFrame frame = new JFrame("StackOverflow Test");
            frame.add(scroll);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack(); 
            frame.setLocationRelativeTo(null);  // to center
            frame.setVisible(true);
        }
一切都很好

对此进行了测试

public static void main(String[] args) {

            String[] ar = {"one", "two", "three"};
            JList data = new JList(ar);

            data.setVisible(true);
            data.setVisibleRowCount(5);
            data.setPreferredSize(new Dimension(400,400));
            data.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

            JScrollPane scroll = new JScrollPane(data);

            JFrame frame = new JFrame("StackOverflow Test");
            frame.add(scroll);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack(); 
            frame.setLocationRelativeTo(null);  // to center
            frame.setVisible(true);
        }
一切都很好

对此进行了测试

public static void main(String[] args) {

            String[] ar = {"one", "two", "three"};
            JList data = new JList(ar);

            data.setVisible(true);
            data.setVisibleRowCount(5);
            data.setPreferredSize(new Dimension(400,400));
            data.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

            JScrollPane scroll = new JScrollPane(data);

            JFrame frame = new JFrame("StackOverflow Test");
            frame.add(scroll);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack(); 
            frame.setLocationRelativeTo(null);  // to center
            frame.setVisible(true);
        }
一切都很好

对此进行了测试

public static void main(String[] args) {

            String[] ar = {"one", "two", "three"};
            JList data = new JList(ar);

            data.setVisible(true);
            data.setVisibleRowCount(5);
            data.setPreferredSize(new Dimension(400,400));
            data.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

            JScrollPane scroll = new JScrollPane(data);

            JFrame frame = new JFrame("StackOverflow Test");
            frame.add(scroll);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.pack(); 
            frame.setLocationRelativeTo(null);  // to center
            frame.setVisible(true);
        }
一切都很好


如果
rightPanel
变量没有布局管理器,则应为其指定布局管理器。缺少布局管理器可能会给您带来意外的结果,因为您没有手动设置组件的边界

此外,正如所指出的,如果可能的话,您不应该在组件上设置首选尺寸。还有其他方法来确定吸引人的维度。例如,使用
JList
,使用
setVisibleRowCount

为了使滚动仅在需要时显示,您可以在
JScrollPane
构造函数上指定滚动条策略,或者使用其set方法来指定滚动条策略。例如:

jlist.setVisibleRowCount(5);
JScrollPane scroll = new JScrollPane(jlist);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

另外,确保滚动窗格的容器符合其首选大小,就像滚动窗格符合列表的首选大小一样。

如果
rightPanel
变量没有布局管理器,则应为其指定布局管理器。缺少布局管理器可能会给您带来意外的结果,因为您没有手动设置组件的边界

此外,正如所指出的,如果可能的话,您不应该在组件上设置首选尺寸。还有其他方法来确定吸引人的维度。例如,使用
JList
,使用
setVisibleRowCount

为了使滚动仅在需要时显示,您可以在
JScrollPane
构造函数上指定滚动条策略,或者使用其set方法来指定滚动条策略。例如:

jlist.setVisibleRowCount(5);
JScrollPane scroll = new JScrollPane(jlist);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

另外,确保滚动窗格的容器符合其首选大小,就像滚动窗格符合列表的首选大小一样。

如果
rightPanel
变量没有布局管理器,则应为其指定布局管理器。缺少布局管理器可能会给您带来意外的结果,因为您没有手动设置组件的边界

此外,正如所指出的,如果可能的话,您不应该在组件上设置首选尺寸。还有其他方法来确定吸引人的维度。例如,使用
JList
,使用
setVisibleRowCount

为了使滚动仅在需要时显示,您可以在
JScrollPane
构造函数上指定滚动条策略,或者使用其set方法来指定滚动条策略。例如:

jlist.setVisibleRowCount(5);
JScrollPane scroll = new JScrollPane(jlist);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

另外,确保滚动窗格的容器符合其首选大小,就像滚动窗格符合列表的首选大小一样。

如果
rightPanel
变量没有布局管理器,则应为其指定布局管理器。缺少布局管理器可能会给您带来意外的结果,因为您没有手动设置组件的边界

此外,正如所指出的,如果可能的话,您不应该在组件上设置首选尺寸。还有其他方法来确定吸引人的维度。例如,使用
JList
,使用
setVisibleRowCount

为了使滚动仅在需要时显示,您可以在
JScrollPane
构造函数上指定滚动条策略,或者使用其set方法来指定滚动条策略。例如:

jlist.setVisibleRowCount(5);
JScrollPane scroll = new JScrollPane(jlist);
scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);

另外,请确保滚动窗格的容器符合其首选大小,就像滚动窗格符合列表的首选大小一样。

是否有例外?可以再加一些代码吗?还有,
listInfor
有多长时间?没有例外,我就是不能让我的JList出现。listInfo是一个从JTextField获取输入的向量。我加了一吨