簡體   English   中英

將 ArrayList 轉換為 JTable 的二維數組

[英]Converting ArrayList to 2d array for JTable

我有一個arrayList,由一個名字和一個分數組成,與名字相對應。 我想在 Jtable 中顯示此信息,但似乎有問題。 我的表只顯示 2 行。 這是代碼:

    int numberOfScores = allScores.size()/6; //arrayList of a username, followed by a score 
    Object[][] newArrayContent = new Object[numberOfScores][6];

    for(int x = 0; x<numberOfScores; x++){
        for(int z = 0; z < 6; z++){
        int y = 6 * x;
        newArrayContent [x][z] = allScores.get(y+z); 
        System.out.println(newArrayContent [x][z].toString());
        }
    }

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Object rowData[][] = newArrayContent;
    Object columnNames[] = { "username", "score"};
    JTable table = new JTable(newArrayContent, columnNames);

    JScrollPane scrollPane = new JScrollPane(table);
    frame.add(scrollPane, BorderLayout.CENTER);
    frame.setSize(300, 150);
    frame.setVisible(true);

我注意到,如果我在columnNames[]添加 2 個列,我會得到 4 個結果,而不是 2 個,但是它們在表中的另一個用戶名列和另一個分數列下是水平的。 我只想要一個 2 列 20-30 行的普通表格。 有人可以幫忙嗎?

您可以進行一些細微的調整,並且您應該能夠按照自己的意願進行操作。

public static void main(String[] args) throws Exception {
    List<String> allScores = new ArrayList<>();
    allScores.add("John Doe");
    allScores.add("95");
    allScores.add("Jane Doe");
    allScores.add("100");
    allScores.add("Stack Overflow");
    allScores.add("75");

    // Divide by 2instead of 6, since every 2 items makes a row
    int numberOfScores = allScores.size() / 2; // ArrayList of a username followed by a score 
    Object[][] newArrayContent = new Object[numberOfScores][2];

    // Counter to track what row is being created
    int rowIndex = 0;
    // Loop through the entire ArrayList.  Every two items makes a row 
    for (int i = 0; i < allScores.size(); i += 2) {
        newArrayContent[rowIndex][0] = allScores.get(i);
        newArrayContent[rowIndex][1] = allScores.get(i + 1);
        rowIndex++;
    }

    JFrame frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Object rowData[][] = newArrayContent;
    Object columnNames[] = {"username", "score"};
    // Use rowData instead of newArrayContent
    JTable table = new JTable(rowData, columnNames);

    JScrollPane scrollPane = new JScrollPane(table);
    frame.add(scrollPane, BorderLayout.CENTER);
    frame.setSize(300, 150);
    frame.setVisible(true);
}

結果:

在此處輸入圖片說明

暫無
暫無

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

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