Java 从Arraylist实现jTable

Java 从Arraylist实现jTable,java,swing,loops,arraylist,jtable,Java,Swing,Loops,Arraylist,Jtable,我有一个包含100个值的ArrayList al = "AA","BB","CC","DD","EE","FF"... upto 100 values 我需要在一个有2列50行的jTable中插入这些值 col1 col2 AA BB CC DD EE FF ... ... 最多50行 我如何得到它(最好使用循环)?需要通用解决方案,因为元素或行的数量可能会有所不同 这是你需要的。我知道这可能不是优化的方法,但仍尝试以下方法: pac

我有一个包含100个值的ArrayList

al = "AA","BB","CC","DD","EE","FF"... upto 100 values
我需要在一个有2列50行的jTable中插入这些值

col1   col2  
AA     BB   
CC     DD  
EE     FF  
...    ...   
最多50行


我如何得到它(最好使用循环)?需要通用解决方案,因为元素或行的数量可能会有所不同

这是你需要的。我知道这可能不是优化的方法,但仍尝试以下方法:

package App;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;

public class JtableModel extends AbstractTableModel {

List list, oddList, evenList;
String col_names[] = {"First", "Second"};

public JtableModel(List list) {
    this.list = list;

}

public void myFormatting(){

    this.oddList = new ArrayList();
    this.evenList = new ArrayList();
    for (int i = 0; i < list.size(); i++) {
        if (i % 2 == 0) {
            this.evenList.add(list.get(i));
        } else {
            this.oddList.add(list.get(i));
        }
    }
}



@Override
public int getRowCount() {
    return evenList.size();
}

@Override
public int getColumnCount() {
    return col_names.length;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {

    switch (columnIndex) {
        case 0:
            try {
                return evenList.get(rowIndex);
            } catch (Exception e) {

            }
        case 1:
            try {
                return oddList.get(rowIndex);
            } catch (Exception  e) {
               //find out how you can validate this 

            }
    }

    return new String();
}
}

我只需将arraylist转换为二维数组

像那样的东西

public void convertToArray(){
    int count = 0;
    for (int j = 0; j < entrys.length; j++) {
        for (int i = 0; i < 2; i++) {
            entrys[j][i] = list.get(count++);
        }
    }
}
并添加到框架等中。

或多或少:

import java.util.ArrayList;
 import javax.swing.*;
 import javax.swing.table.DefaultTableModel;


 public class NewClass extends JFrame {

private JTable table;
private DefaultTableModel model;
private JScrollPane scroll;
private String headers[] = {"col1","col2"};
String[] data = {"AA", "BB", "CC", "DD", "EE", "FF","GG","HH","II","JJ","KK","LL","MM","NN","OO","PP","QQ","RR"};

public NewClass() {

    model = new DefaultTableModel();
    model.setColumnIdentifiers(headers);

    table = new JTable();
    table.setModel(model);

    scroll = new JScrollPane(table);

    insert();

    add(scroll, java.awt.BorderLayout.CENTER);
    setSize(300, 300);
    setVisible(true);
}

public void insert(){  
 ArrayList<String> ar = new ArrayList<String>();
    for (int i = 0; i < data.length; i++) {
        ar.add(data[i]);
    }

   for (int i=0;i<(ar.size()/2);i++) {                 
    model.addRow(new Object[] { String.valueOf(ar.get(2*i)) ,  String.valueOf(  ar.get((2*i)+1))                                });

  }
    }

public static void main(String[] args) {
new NewClass();
    }
   }
import java.util.ArrayList;
导入javax.swing.*;
导入javax.swing.table.DefaultTableModel;
公共类NewClass扩展了JFrame{
专用JTable表;
私有模型;
私有JScrollPane滚动条;
私有字符串头[]={“col1”,“col2”};
字符串[]数据={“AA”、“BB”、“CC”、“DD”、“EE”、“FF”、“GG”、“HH”、“II”、“JJ”、“KK”、“LL”、“MM”、“NN”、“OO”、“PP”、“QQ”、“RR”};
公共类(){
模型=新的DefaultTableModel();
model.setColumnIdentifiers(标题);
table=新的JTable();
表2.setModel(model);
滚动=新的JScrollPane(表格);
插入();
添加(滚动,java.awt.BorderLayout.CENTER);
设置大小(300300);
setVisible(真);
}
public void insert(){
ArrayList ar=新的ArrayList();
对于(int i=0;i对于(int i=0;我看过了吗?这里解释了几个问题,什么不清楚?谢谢,但我需要填充并分配每个字段值(al.get(i))使用循环。我阅读了链接中的方法,还检查了没有必要使用循环,只需正确设置TableModel即可。将原始
arr
划分为两个子列表完全没有必要,而且会浪费内存和时间。
    String[] header = {"col1", "col2"};
    table = new JTable(entrys, header);
import java.util.ArrayList;
 import javax.swing.*;
 import javax.swing.table.DefaultTableModel;


 public class NewClass extends JFrame {

private JTable table;
private DefaultTableModel model;
private JScrollPane scroll;
private String headers[] = {"col1","col2"};
String[] data = {"AA", "BB", "CC", "DD", "EE", "FF","GG","HH","II","JJ","KK","LL","MM","NN","OO","PP","QQ","RR"};

public NewClass() {

    model = new DefaultTableModel();
    model.setColumnIdentifiers(headers);

    table = new JTable();
    table.setModel(model);

    scroll = new JScrollPane(table);

    insert();

    add(scroll, java.awt.BorderLayout.CENTER);
    setSize(300, 300);
    setVisible(true);
}

public void insert(){  
 ArrayList<String> ar = new ArrayList<String>();
    for (int i = 0; i < data.length; i++) {
        ar.add(data[i]);
    }

   for (int i=0;i<(ar.size()/2);i++) {                 
    model.addRow(new Object[] { String.valueOf(ar.get(2*i)) ,  String.valueOf(  ar.get((2*i)+1))                                });

  }
    }

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