我很努力地將我的數組列表變成一個二維數組,然後將它添加到表中以顯示數據。Arraylist到二維數組,然後到一個JTable
import java.awt.*;
import javax.swing.*;
import java.util.ArrayList;
import java.util.List;
public class Planettabell
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame vindu = new Test();
vindu.setVisible(true);
}
});
}
}
class Test extends JFrame
{
private String[] name = {"Name", "grade"};
Object[][] cell = {{"nameHer", "GradeHer"}};
Object[][] cell2 = {{"nameHer2", "gradeHer2"}};
Object[][] cell3 = {{"nameHer3", "gradeHer3"} };
public Test()
{
setTitle("Planettabell");
setSize(500, 210);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
List<Object[]> list = new ArrayList<Object[]>();
list.add(cell);
list.add(cell2);
list.add(cell3);
Object[][]array = list.toArray(new Object[list.size()][]);
JTable tabell = new JTable(array, name);
Container c = getContentPane();
c.setLayout(new FlowLayout());
c.add(new JScrollPane(tabell), BorderLayout.CENTER);
}
}
如果我運行它 Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 1
此代碼工作,如果我加入,而不是在JTable的「數組」「細胞」,我會得到這個消息,但我需要從列表整個陣列工作。
我也嘗試:的
int number = list.size()/2;
Object[][] ArrayNew = new Object[number][2];
for(int x = 0; x< number; x++)
{
for(int z = 0; z < 2; z++)
{
int y = 2 * x;
ArrayNew [x][z] = list.get(y+z);
}
}
JTable tabell = new JTable(ArrayNew, name);
代替list.toarray。但是,我只能gett [[Ljava.lang.Object; @ 28864ae7和[[Ljava.lang.Object; @ 49214a13表中的文本應該是。
將appreicate任何答案:)
[這個問題]的可能的複製(http://stackoverflow.com/questions/2146488/converting-an-arraylist-into-a-2d-array)。如果沒有,那麼它可能會提供一些靈感:) – davmos 2013-05-03 21:06:27
我以前見過這個問題,我已經嘗試了答案,但可悲的是他們中沒有人似乎爲我工作 – Madde 2013-05-03 21:30:04