Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JList滚动错误?_Java_Swing_Jscrollpane_Jlist - Fatal编程技术网

Java JList滚动错误?

Java JList滚动错误?,java,swing,jscrollpane,jlist,Java,Swing,Jscrollpane,Jlist,我不知道这是否只是在我使用DefaultListModel而不是vector时,但问题是,当我制作JList&JScrollPane时,滚动条正确显示,但即使有足够的元素填充整个窗口,我也无法滚动 源代码: panel_unit.add(YUi.JScrollPane(list = YUi.JList(main.config.fdata,0,0,this,0),500,314,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER,JScrollPane.VERTICAL_

我不知道这是否只是在我使用
DefaultListModel
而不是
vector
时,但问题是,当我制作
JList
&
JScrollPane时,
滚动条正确显示,但即使有足够的元素填充整个窗口,我也无法滚动

源代码:

panel_unit.add(YUi.JScrollPane(list = YUi.JList(main.config.fdata,0,0,this,0),500,314,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS),5,5);
public static JList JList(DefaultListModel text,int width,int height,ListSelectionListener listener,int SelIndex) {
    JList list = new JList(text);
    list.setPreferredSize(new Dimension(width,height));
    list.setSelectedIndex(SelIndex);
    list.addListSelectionListener(listener);
    return list;
}
public static JScrollPane JScrollPane(Component text,int width,int height,int HorizontalScrollBarPolicy,int VerticalScrollBarPolicy) {
    JScrollPane scrollpane = new JScrollPane(text);
    scrollpane.setPreferredSize(new Dimension(width,height));
    scrollpane.setHorizontalScrollBarPolicy(HorizontalScrollBarPolicy);
    scrollpane.setVerticalScrollBarPolicy(VerticalScrollBarPolicy);
    return scrollpane;
}

您应该将JScrollPane包装在JList上

例如:

JScrollPane scrollpane = new JScrollPane(list);

PS:您使用的命名约定根本不合适

您应该将JScrollPane包装在JList上

例如:

JScrollPane scrollpane = new JScrollPane(list);
PS:您使用的命名约定根本不合适

步骤包括:

  • 创建JList组件,称为“myJList”

  • 使用JListComponent创建JScrollPane组件: JScrollPane mycrollpane=新的JScrollPane(myJList)

  • 仅将JScrollPane添加到GUI:.Add(myScrollPane)

  • 步骤如下:

  • 创建JList组件,称为“myJList”

  • 使用JListComponent创建JScrollPane组件: JScrollPane mycrollpane=新的JScrollPane(myJList)

  • 仅将JScrollPane添加到GUI:.Add(myScrollPane)


  • 这可能与您使用设置首选大小以及始终使用JScrollPane.VERTICAL\u滚动条有关。如果你把这个常数放在那里,不管你是否可以滚动,它都会显示一个滚动条

    只要尝试一下,我打赌它会奏效:

    new JScrollPane( list );
    

    这可能与您使用设置首选大小以及始终使用JScrollPane.VERTICAL\u滚动条有关。如果你把这个常数放在那里,不管你是否可以滚动,它都会显示一个滚动条

    只要尝试一下,我打赌它会奏效:

    new JScrollPane( list );
    

    永远不要使用setXXSize(XX==min,pref,max)setPrefferedSize让我失望了,为什么我不应该使用它呢。。另外,这很可能与您在这里遇到的问题有关;-)永远不要使用setXXSize(XX==min,pref,max)setPrefferedSize让我失望了,为什么我不应该使用它呢。。另外,这很可能与您在这里遇到的问题有关;-)恐怕这就是我的dngI恐怕这就是我的dngNope,如果我删除关于滚动条的内容,垂直滚动条甚至不会显示您正在设置列表上的首选大小。删除列表中的任何setPreferredSize(),它就会工作。设置preferredSize会使列表始终保持该宽度和高度,而不管内容如何,滚动窗格始终将自身设置为列表的首选大小。如果列表显示我想要1000像素,那么滚动条将允许它为1000像素,并显示一个滚动条以访问未显示的部分。否则,滚动条不会“看到”未显示的部分。不,如果我删除滚动条的相关内容,垂直滚动条甚至不会显示您正在设置列表上的首选大小。删除列表中的任何setPreferredSize(),它就会工作。设置preferredSize会使列表始终保持该宽度和高度,而不管内容如何,滚动窗格始终将自身设置为列表的首选大小。如果列表显示我想要1000像素,那么滚动条将允许它为1000像素,并显示一个滚动条以访问未显示的部分。否则,滚动条不会“看到”未显示的部分。