我正在尝试向JScrollPane
添加JList
,但无论出于何种原因,它都无效。我已经在这里和其他网站上阅读了几个教程,似乎我正确地遵循了指示。我已经尝试过使用DefaultListModel
和DefaultListModel
来看看它是否有所作为。我也试过调整小部件本身的大小,但这也行不通。
这是我的代码。 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);
答案 0 :(得分:0)
问题围绕fill()
内的GridBagLayout()
方法。我没有注意到它被设置为VERTICAL
,这意味着JList将要求更多的垂直空间。更改为HORIZONTAL
解决了问题。