jTextFields和JScrollPane的列表不';t show/javaswing

jTextFields和JScrollPane的列表不';t show/javaswing,java,swing,Java,Swing,我试图创建一个窗口,显示文本字段和 如果文本字段的数量很大,那么我想添加一个滚动条。 我正在使用GridLayout。 问题是我添加了Jlist和scroller的面板没有显示任何内容,列表和scroller都没有显示。下面是我的部分代码 //Label JLabel numberOfTxt = new JLabel("Please enter the number in every TextField");

我试图创建一个窗口,显示文本字段和 如果文本字段的数量很大,那么我想添加一个滚动条。 我正在使用GridLayout。 问题是我添加了Jlist和scroller的面板没有显示任何内容,列表和scroller都没有显示。下面是我的部分代码

                   //Label 
                JLabel numberOfTxt = new JLabel("Please enter the number in every TextField");
                int n = 11; //A random number of TextFields
                firstPanel.add(numberOfTxt, BorderLayout.NORTH); //Add label to panel

                JList textFieldList = new JList(); //Create a list of TextFields
                for (int i = 0; i < n; i++) {
                    //Add TextFields to list
                    JTextField textField = new JTextField();
                    textField.setBounds(0, 0, 6, 0);

                    textFieldList.add(textField);
                    System.out.println("textFieldList" + textFieldList);
                }


                textFieldList.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
                textFieldList.setLayoutOrientation(JList.HORIZONTAL_WRAP);
                textFieldList.setVisibleRowCount(8);

                //Create scroller
                JScrollPane listScroller = new JScrollPane(textFieldList);
                listScroller.setBounds(0, 20, 600, 600);

                //Create layout for panel where the textfields will be added
                if (n % 2 != 0) {
                    n = n + 1;
                }
                thirdPanel.setLayout(new GridLayout(n / 2, 2, 10, 6));
                thirdPanel.add(textFieldList);
                thirdPanel.setVisible(true);

                //ContentPane has BoxLayout
                contentPane.add(firstPanel);
                contentPane.add(thirdPanel);

                contentPane.repaint();
                window.pack();
            }
            window.revalidate();
        }
    });
//标签
JLabel numberOfTxt=新的JLabel(“请在每个文本字段中输入数字”);
int n=11//随机数目的文本字段
添加(numberOfTxt,BorderLayout.NORTH)//将标签添加到面板
JList textFieldList=新JList()//创建文本字段列表
对于(int i=0;i
  • JList
    不是这样工作的。如果您确实需要
    JList
    TextFields
    ,您应该使用
    ListCellRenderer
    (您可能不需要,请参见第3页)

  • textFieldList
    添加到
    listcroller
    thirdPanel
    。可能,您应该替换
    thirdPanel.add(textFieldList)通过
    thirdPanel.add(listScroller)

  • thirdPanel
    使用
    GridLayout
    ,但只有一个控件添加到它。您应该直接将
    TextField
    添加到
    thirdPanel
    (更简单的方法),或者让
    JList
    管理它们


  • 首先,谢谢你的快速回答。关于3。您建议我让第三面板布局为空,并将gridlayout添加到Jlist?否。您不应该首先将
    TextField
    s添加到
    Jlist
    。这完全是胡说八道。尝试直接将
    TextField
    s添加到
    thirdPanel
    。嗯?您不应该将JTextFields添加到JLists,因为这没有意义。你到底想在这里干什么?