[英]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.