将列表添加到JScrollPane时无法添加到JList

用户名

我编写了一个选择文件并将其添加到JList的程序。该程序运行正常,将文件添加到列表的代码如下所示:

JPanel pane;
File newFile[];
static List<File> files = new ArrayList<File>();
static DefaultListModel<File> listModel = new DefaultListModel<>();
JList<File> fileList = new JList<>(listModel);

JPanel listPane = new JPanel();
pane.add(listPane, BorderLayout.CENTER);
listPane.setBackground(Color.LIGHT_GRAY);
listPane.setBorder(new EmptyBorder(0, 20, 0, 0));
listPane.setLayout(new BorderLayout());
listPane.add(fileList);
}
void getFile() {
    final JFileChooser fc = new JFileChooser();
    fc.setDialogTitle("Select File...");
    fc.setApproveButtonText("Select");
    fc.setMultiSelectionEnabled(true);
    int returnVal = fc.showOpenDialog(pane);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        newFile = fc.getSelectedFiles();
    }
}
void setFile() {
    int i = 0;
    while (i < newFile.length) {
        files.add(newFile[i]);
        listModel.addElement(newFile[i]);
        i++;
    }
}

这是选择和添加文件的基本代码。所以现在我想在窗格上有一个滚动条,所以我将其修改为如下所示的JScrollPane:

JScrollPane listPane = new JScrollPane();
pane.add(listPane, BorderLayout.CENTER);
listPane.setBackground(Color.LIGHT_GRAY);
listPane.setBorder(new EmptyBorder(0, 20, 0, 0));
listPane.setViewportView(fileList);
listPane.add(fileList);
}

因此,所有内容均可正确编译,但不会将任何内容添加到JScrollPane。据我了解,JScrollPane可以像常规JPanel一样使用,除了它在溢出时将具有滚动条。我在这里缺少关于JScrollPanes的东西吗?

Madhawa Priyashantha

尝试删除

listPane.add(fileList); //remove

您应该使用setViewportView()方法将组件添加到滚动窗格。并且已经完成。因此,您无需通过调用来再次添加listPane.add

例子

JScrollPane listPane = new JScrollPane();
pane.add(listPane, BorderLayout.CENTER);
listPane.setBackground(Color.LIGHT_GRAY);
listPane.setBorder(new EmptyBorder(0, 20, 0, 0));
listPane.setViewportView(fileList);
// removed add line

您也可以像汤普森所说的那样,通过将要添加到滚动窗格的组件传递给滚动窗格构造函数。

JScrollPane listPane = new JScrollPane(fileList);

就像汤普森所说的那样,您应该避免声明。您应该listModel ,files阅读更多有关static关键字以及何时使用它的信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法将JScrollPane添加到JTextArea

来自分类Dev

从arrayList添加到Jlist时出错

来自分类Dev

将元素添加到DefaultListModel时JList不更新

来自分类Dev

将JPanel添加到JList

来自分类Dev

将JTable添加到JScrollPane

来自分类Dev

将JscrollPane添加到JTextPane

来自分类Dev

将JScrollPane添加到JPanel

来自分类Dev

将JScrollPane添加到重写的JPanel

来自分类Dev

无法将主机添加到已知主机列表

来自分类Dev

Javascript:无法将href添加到列表项

来自分类Dev

SSH“无法将主机添加到已知主机列表”

来自分类Dev

无法将主机添加到已知主机列表

来自分类Dev

我无法将元素添加到列表-C ++

来自分类Dev

无法将列表添加到烧瓶中的会话

来自分类Dev

无法将新值添加到列表对象

来自分类Dev

无法将元素添加到列表的前面

来自分类Dev

我无法将int添加到列表中

来自分类Dev

无法将值添加到列表中

来自分类Dev

无法将节点添加到链接列表

来自分类Dev

无法将活动班级添加到列表中

来自分类Dev

无法将实体作为列表添加到ViewModel?

来自分类Dev

递归Java后无法将文件添加到列表

来自分类Dev

无法将元素添加到列表中

来自分类Dev

PySpark:当列是列表时,将列添加到DataFrame

来自分类Dev

在创建对象时将项目添加到列表

来自分类Dev

将项目添加到列表时出现AccessViolationException

来自分类Dev

将某些内容添加到列表时更新ViewModel

来自分类Dev

发生异常时将值添加到下拉列表

来自分类Dev

将项目添加到列表时出现AccessViolationException