JScrollPane没有显示JList

时间:2014-12-11 04:05:04

标签: java swing user-interface jscrollpane jlist

我正在尝试向JScrollPane添加JList,但无论出于何种原因,它都无效。我已经在这里和其他网站上阅读了几个教程,似乎我正确地遵循了指示。我已经尝试过使用DefaultListModelDefaultListModel来看看它是否有所作为。我也试过调整小部件本身的大小,但这也行不通。

这是我的代码。 itemNames是一个Strings[]数组,其中包含我添加到JList的各种纪念品名称。我正在使用BorderLayout()而我正在尝试添加JScrollPane的面板正在使用GridBagLayout()

souvenirList = new JList(itemNames);
souvenirList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
souvenirList.setLayoutOrientation(JList.VERTICAL);
souvenirList.setVisibleRowCount(-1);

scrollPane = new JScrollPane(souvenirList);

gbc3.gridx = 1;
gbc3.gridy = 1;
centerPanel.add(scrollPane, gbc3);

c.add(centerPanel, BorderLayout.CENTER);

该框显示其中的名称,但没有JScrollPane :(我希望有人可以帮助我,也许指出我可能会犯的一个简单的错误。感谢所有提前。请不要发布链接关于这个主题的教程cus相信我,我已经彻底阅读了它们。

编辑:在我构建的这个小型可运行示例中,主要使用我之前代码段中的代码,条形显示正常!为什么会这样?我可以将它添加到JPanel吗?或者也许是GridBagLayout?我在这里很困惑....

import javax.swing.*;
import java.awt.*;


public class JScroll extends JFrame
{
    JList souvenirList;
    JScrollPane scrollPane;

    Container c = getContentPane();

    private String[] itemNames = {"mug","cap","tee shirt","sweat shirt","pennant","mini stick",
            "bobblehead","paper bag","foam paw","thunderstix"};

    public JScroll()
    {
        setLayout(new FlowLayout());

        souvenirList = new JList(itemNames);
        souvenirList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        souvenirList.setLayoutOrientation(JList.VERTICAL);
        //souvenirList.setVisibleRowCount(-1);

        scrollPane = new JScrollPane(souvenirList);

        c.add(scrollPane);
    }

    public static void main(String[] args)
    {
        JScroll frame = new JScroll();
        frame.setSize(400,300);
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

1 个答案:

答案 0 :(得分:0)

问题围绕fill()内的GridBagLayout()方法。我没有注意到它被设置为VERTICAL,这意味着JList将要求更多的垂直空间。更改为HORIZONTAL解决了问题。