Java 从Arraylist实现jTable
我有一个包含100个值的ArrayListJava 从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
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();
}
}