Java scrollPane无法获取滚动条

Java scrollPane无法获取滚动条,java,eclipse,swing,jscrollpane,jscrollbar,Java,Eclipse,Swing,Jscrollpane,Jscrollbar,我在代码中动态填充了一个滚动窗格。问题是我无法让它扩大范围 我已经尝试了很多我可以在网上找到的技巧,但并没有什么能让它出现 我循环出10个组件,但大小始终保持不变 B = new JScrollPane(); B.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); B.setViewportBorder(null); B.setBounds(12,

我在代码中动态填充了一个滚动窗格。问题是我无法让它扩大范围

我已经尝试了很多我可以在网上找到的技巧,但并没有什么能让它出现

我循环出10个组件,但大小始终保持不变

  B = new JScrollPane();
     B.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
       B.setViewportBorder(null);

          B.setBounds(12, 53, 330, 400);

       //making the scrollPane

       loadArtists(country); 


       // loading the method with the content


    contentPane.add(B);

       // the content method

               public void loadArtists(String country){
    ArrayList<Artist> top10A = Methods.getTopArtist(country); // top atrister

    B.removeAll();

    String [] genre =Methods.getGenreArtist(country);                                           
    Component2[] comp = new Component2[10]; // skriv ut infohållare

    for (int i = 0; i < top10A.size(); i++) {
        comp[i] = new Component2(this);
        comp[i].setBounds(0, 0, 327, 68);
        comp[i].setLocation(0, 0 + space2);
        ImageIcon[] panel= new ImageIcon[10];

        int lyssnare = top10A.get(0).getListeners();

        try {
                URL url2 = new             URL((top10A.get(i).getImageURL(ImageSize.valueOf("MEDIUM"))));  
                panel[i]= new ImageIcon(url2);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                panel[i]= new ImageIcon(GUI.class.getResource("/bilder/super.jpg"));
                e.printStackTrace();

            }

        comp[i].setInfo(panel[i],top10A.get(i).getListeners(), top10A.get(i).getName().toString(), String.valueOf(i+1),genre[i],lyssnare,"");

        B.add(comp[i]);
        space2 = space2 + 75;

               //B.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);

         B.repaint();
    }
}
它不是最优的,因为它不允许我动态地增长内容。 但现在这并不重要,因为我不需要超过10个组件循环

B.setBounds(12, 53, 330, 400);
不要在组件上使用setBounds方法

Swing设计用于布局管理器。当添加到滚动窗格的组件的首选大小大于滚动窗格的大小时,滚动条将自动显示。布局管理器为您执行这些计算

有关更多信息和示例,请参见上的Swing教程部分

不要在组件上使用setBounds方法

Swing设计用于布局管理器。当添加到滚动窗格的组件的首选大小大于滚动窗格的大小时,滚动条将自动显示。布局管理器为您执行这些计算


有关更多信息和示例,请参见Swing教程中的章节。

除了Rob Camick给出的建议之外,您还将直接从JScrollPane中删除所有组件,并尝试将组件直接添加到JScrollPane中,忽略了JViewport不应被弄乱,可视化组件需要添加到JScrollPane的视口中,而不是添加到JScrollPane本身

因此,您可以通过将组件传递到JScrollPane的构造函数将其添加到JScrollPane的视口中,或者可以调用JScrollPane的setViewportView。。。方法,如果要交换它所包含的视图

另一方面,请尝试使用更好的变量名,符合Java命名标准的名称(例如实例变量名)应以小写字母开头,以及使代码能够自我注释的有意义的名称。变量名B不符合这些建议中的任何一个

此外,您的整个程序缺少像样的布局管理器。您似乎希望向JScrollPane添加多个组件。考虑创建JSCROLPAN的视口所保持的JPAND,给它一个适当的布局,可能是网格布局…并将多个组件添加到此JPanel


<>对于更具体和信息性的帮助,除了Rob Camick提出的伟大建议外,考虑创建和发布

< P>您还将直接从JScrollPane中删除所有组件,并尝试将组件直接添加到JScrollPane中,忽略了JViewport不应被弄乱,可视化组件需要添加到JScrollPane的视口中,而不是添加到JScrollPane本身

因此,您可以通过将组件传递到JScrollPane的构造函数将其添加到JScrollPane的视口中,或者可以调用JScrollPane的setViewportView。。。方法,如果要交换它所包含的视图

另一方面,请尝试使用更好的变量名,符合Java命名标准的名称(例如实例变量名)应以小写字母开头,以及使代码能够自我注释的有意义的名称。变量名B不符合这些建议中的任何一个

此外,您的整个程序缺少像样的布局管理器。您似乎希望向JScrollPane添加多个组件。考虑创建JSCROLPAN的视口所保持的JPAND,给它一个适当的布局,可能是网格布局…并将多个组件添加到此JPanel


<>为了更具体和更有用的帮助,考虑创建和发布.< /p> + 1,以正确使用滚动窗格/视口和java变量名。我注意到挫折后就停止了阅读。。问题。@camickr:谢谢。3小时前给你1+的建议。谢谢你的建议。我还是一个编程新手,当我感到沮丧时,更多的编程内容就进入了变量。我会做得更好。为了正确使用scrollpane/viewport和Java变量名,我将尝试实现今天推荐的更改并返回+1。我注意到挫折后就停止了阅读。。问题。@camickr:谢谢。3小时前给你1+的建议。谢谢你的建议。我还是一个编程新手,当我感到沮丧时,更多的编程内容就进入了变量。我会做得更好。我将尝试实施今天建议的更改,然后返回。我不知道如何启动滚动窗格而不受挫折。如果有人把它拿走,它就会消失。收进的最重要的一点是,如果一个卷轴的高度为400,则播放时没有卷轴。但如果我把它降到400以下,我就可以向下滚动到400。在某个地方,我找到了解决这个小问题的方法。如果一个移动它,它就会消失。不要使用空的la
你!!!布局管理器将设置所有组件的大小。我不知道如何启动滚动窗格而不进行设置。如果有人把它拿走,它就会消失。收进的最重要的一点是,如果一个卷轴的高度为400,则播放时没有卷轴。但如果我把它降到400以下,我就可以向下滚动到400。在某个地方,我找到了解决这个小问题的方法。如果一个移动它,它就会消失。不要使用空布局!!!布局管理器将设置所有组件的大小。
          setComponents.setPreferredSize(new Dimension(1,750));
B.setBounds(12, 53, 330, 400);