gpt4 book ai didi

Java - IntelliJ - JScrollPane 中的 JList

转载 作者:行者123 更新时间:2023-12-02 08:52:02 25 4
gpt4 key购买 nike

你好,

我关于 SOF 的第一个问题。我的 JScrollPane 和 JList 有问题。我已经为列表创建了类,并使用 getter 来获取列表对象

package frontend;

import javax.swing.*;

public class GeneratedList
{
private JList<String> List;

public GeneratedList() {
DefaultListModel<String> listModel = new DefaultListModel<>();
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
listModel.addElement("1");
List = new JList<>(listModel);
}

public JList<String> getList() {
return List;
}}

并获得了用于制作整个框架的类 GUI。

package frontend;

import javax.swing.*;
import java.awt.*;

public class GUI
{
JFrame frame = new JFrame("QR Generator");

BorderLayout borderLayout = new BorderLayout();
public static JFormattedTextField inputField = new JFormattedTextField("XX.XXXX.XX");
JButton generateButtton = new JButton("Generate");
JButton printButton = new JButton("Print");

public GUI()
{
frame.setVisible(true);
frame.setLayout(borderLayout);
frame.setSize(new Dimension(200,200));

frame.add(inputField,BorderLayout.NORTH);
frame.add(generateButtton,BorderLayout.NORTH);

frame.add(printButton,BorderLayout.EAST);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setSize(200,300);
frame.add(scrollPane.add(new GeneratedList().getList()));
}}

在这种风格的代码中它是有效的。列表可见,但没有滚动条

frame view

第一个问题是为什么? :)第二个问题是为什么在这种语法中,列表在框架上不可见。

package frontend;

import javax.swing.*;
import java.awt.*;

public class GUI
{
JFrame frame = new JFrame("QR Generator");

BorderLayout borderLayout = new BorderLayout();
public static JFormattedTextField inputField = new JFormattedTextField("XX.XXXX.XX");
JButton generateButtton = new JButton("Generate");
JButton printButton = new JButton("Print");
JScrollPane scrollPane = new JScrollPane();
public GUI()
{
frame.setVisible(true);
frame.setLayout(borderLayout);
frame.setSize(new Dimension(200,200));

frame.add(inputField,BorderLayout.NORTH);
frame.add(generateButtton,BorderLayout.NORTH);

frame.add(printButton,BorderLayout.EAST);

frame.add(scrollPane);
scrollPane.add(new GeneratedList().getList());
}
}

感谢您的帮助

最佳答案

frame.add(scrollPane.getViewport().add(list.getList())

这不是将组件添加到视口(viewport)的方式。

您使用:

frame.add(scrollPane.setViewportView(...);

或者,更简单的方法是在创建 JScrollPane 时添加该组件。

JScrollPane scrollPane = new JScrollPane(...);

阅读 Swing 教程中关于 How to Use Lists 的部分了解更多信息和工作示例。

下载示例并将其用作起点。本教程中的代码将向您展示如何更好地构建您的类。

关于Java - IntelliJ - JScrollPane 中的 JList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60712881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com