2

如何以JList水平方式加载?这是我的代码,我正在尝试显示JList与提供的屏幕截图类似的内容。

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.awt.BorderLayout;
import java.io.File;
import java.util.ArrayList;
import javax.swing.DefaultListModel;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;

public class Test extends JFrame{

    private JList toolsList;
    private ArrayList<File> toolXmlList;

    public Test()
    {
    toolXmlList = new ArrayList<File>();
    toolXmlList = loadFiles();

    setVisible(true);
    setSize(300,300);
    setTitle("Test Jlist");
    createComponents();

    }

    public void createComponents()
    {
    toolsList = new JList();
    toolsList.setModel(displayDefaltTools());
    toolsList.setLayoutOrientation(javax.swing.JList.VERTICAL_WRAP);
    setLayout(new BorderLayout());
    add(toolsList,BorderLayout.CENTER);
    }

    /**
     * Creates a list model and add the tools to it
     *
     * @return DefaultListModel
     */
    public DefaultListModel displayDefaltTools() {
    DefaultListModel dlistModel = new DefaultListModel();
    String presentation = "";

    for (int i = 0; i < toolXmlList.size(); i++) {
        //System.out.println(idSet.get(i));
        presentation = presentation +  toolXmlList.get(i).getName() ;
        dlistModel.addElement(presentation);
        presentation = "";
    }
    return dlistModel;
    }

    public ArrayList loadFiles()
    {
    ArrayList<File> xmlFiles = new ArrayList<File>();
    File f = new File(".");
    File [] folList = f.listFiles();
    for(int i=0;i<folList.length;i++)
    {
        if(folList[i].getName().startsWith("Tool_Frag"))
        {
            File[] fileList=folList[i].listFiles();
            for(int j=0;j<fileList.length;j++)
            {
                System.out.println(fileList[j].getName());
                xmlFiles.add(fileList[j]);
            }
        }
    }
    return xmlFiles;
    }

    public static void main(String[] args)
    {
    new Test();
    }
}

我正在尝试以这种方式获取 jlist,项目并排显示 jlist 布局截图

4

1 回答 1

5

你必须做两件事:

  1. 根据文档设置LayoutOrientationJList.HORIZONTAL_WRAP或。JList.VERTICAL_WRAP

  2. 使列表足够宽,使其每行可以显示多个元素。用于setVisibleRowCount()此。

    调用setPreferredSize()也可以,但在您使用布局管理器时可能会导致麻烦。

或者,JTable如果您必须确保一定数量的行/列(如单行中的所有元素),请考虑使用。

于 2012-12-20T08:23:40.220 回答