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

次の 2 つのことを行う必要があります。

  1. ドキュメントに従ってLayoutOrientationまたはJList.HORIZONTAL_WRAPJList.VERTICAL_WRAP設定します。

  2. 1 行に複数の要素を表示できるように、リストの幅を十分に広げます。これに使用setVisibleRowCount()します。

    呼び出しsetPreferredSize()も機能しますが、レイアウト マネージャーを使用すると問題が発生する可能性があります。

JTableまたは、特定の数の行/列を確認する必要がある場合 (すべての要素が 1 行にあるように)を使用することを検討してください。

于 2012-12-20T08:23:40.220 に答える