簡體   English   中英

Java - IntelliJ - JScrollPane 中的 JList

[英]Java - IntelliJ - JList in JScrollPane

你好,

我關於 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()));
    }}

在這種風格的代碼中它可以工作。 列表可見但沒有滾動條

框架視圖

第一個問題是為什么? :) 第二個問題是為什么在這種語法中,列表在框架上不可見。

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())

這不是您將組件添加到視口的方式。

你用:

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

或者,更簡單的方法是在創建 JScrollPane 時添加組件。

JScrollPane scrollPane = new JScrollPane(...);

閱讀 Swing 教程中關於如何使用列表的部分,了解更多信息和工作示例。

下載示例並將其用作起點。 本教程中的代碼將向您展示如何更好地構建類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM