我正在尝试创建一个显示textFields动态列表的窗口 如果文本字段的数量很大,那么我想添加一个滚动条。 我正在使用GridLayout。 问题是我添加了Jlist和滚动条的面板没有显示任何内容,包括列表和滚动条。您可以在下面找到我的部分代码。
//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();
}
});
答案 0 :(得分:3)
JList
不起作用。如果您确实需要JList
TextFields
,则应使用ListCellRenderer
(可能您不会,请参阅第3页)。
您将textFieldList
添加到listScroller
和thirdPanel
。您可能应该thirdPanel.add(textFieldList);
替换thirdPanel.add(listScroller);
。
thirdPanel
使用GridLayout
,但只添加了一个控件。您应该TextField
直接添加thirdPanel
(更简单的方式),或让JList
管理它们。