【发布时间】:2011-12-25 21:56:28
【问题描述】:
下面是我创建 JList 的代码。当它在独立的 JFrame 中创建时,JList 会填充整个框架。但是,当我将它创建为 JPanel 并将其添加到 JFrame 时,它并没有填充组件的大小,为什么?
public class ListBranchesInterface extends JPanel {
private Library theLibrary; // reference to back end
private ArrayList<LibraryBranch> branches;
private DefaultListModel dlm;
private JList list;
private JScrollPane scroll;
public ListBranchesInterface(Library theLibrary) {
this.theLibrary = theLibrary;
branches = new ArrayList<LibraryBranch>();
branches.addAll(theLibrary.getLibraryBranches());
Iterator<LibraryBranch> iter = branches.iterator();
dlm = new DefaultListModel();
while (iter.hasNext()) {
dlm.addElement(iter.next().toString());
}
list = new JList(dlm); // create a JList from the default list model
scroll = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); // add a scroll pane
// to the JList
add(scroll);
setVisible(true);
}
【问题讨论】:
-
(JPanel.)setVisible(true)对于添加到可见容器的任何组件,默认情况下都会发生这种情况(例如,一旦调用了setVisible(true),就会出现JFrame)。
标签: java swing jframe jpanel jlist