Java Swing Jtable 只显示一个row/line
Java Swing Jtable show only one row/line
大家好,我想寻求一些帮助,打开 table 后,我不明白我的代码哪里出错了。只显示一个玩家
/**
* Create the frame.
*/
public Player()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 316, 475);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
// create table with data
// headers for the table
column = new String[]
{
"Id",
"Name",
"level",
"Part Time"
};
for (L2PcInstance pc : L2World.getInstance().getPlayers())
{
if (pc.isOnline() && ((pc.getClient() != null) && !pc.getClient().isDetached()))
{
// actual data for the table in a 2d array
data = new Object[][]
{
{
pc.getId(),
pc.getName(),
pc.getLevel(),
false
},
};
}
}
// create table with data
JTable table = new JTable(data, column);
contentPane.add(table, BorderLayout.NORTH);
}
}
感谢大家的宝贵时间 :) 抱歉英语不好
想想你的逻辑。
在 for 循环中,您不断创建 "data" 数组的新实例。因此,您创建的最后一个实例仅包含最后一行的数据。
您的逻辑需要更改为:
DefaultTableModel model = new DefaultTableModel(column, 0);
for (every row)
{
Object[] row = {....};
model.addRow( row );
}
JTable table = new JTable( model );
现在每行数据都会在您读取数据时添加到模型中。
大家好,我想寻求一些帮助,打开 table 后,我不明白我的代码哪里出错了。只显示一个玩家
/**
* Create the frame.
*/
public Player()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 316, 475);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
// create table with data
// headers for the table
column = new String[]
{
"Id",
"Name",
"level",
"Part Time"
};
for (L2PcInstance pc : L2World.getInstance().getPlayers())
{
if (pc.isOnline() && ((pc.getClient() != null) && !pc.getClient().isDetached()))
{
// actual data for the table in a 2d array
data = new Object[][]
{
{
pc.getId(),
pc.getName(),
pc.getLevel(),
false
},
};
}
}
// create table with data
JTable table = new JTable(data, column);
contentPane.add(table, BorderLayout.NORTH);
}
}
感谢大家的宝贵时间 :) 抱歉英语不好
想想你的逻辑。
在 for 循环中,您不断创建 "data" 数组的新实例。因此,您创建的最后一个实例仅包含最后一行的数据。
您的逻辑需要更改为:
DefaultTableModel model = new DefaultTableModel(column, 0);
for (every row)
{
Object[] row = {....};
model.addRow( row );
}
JTable table = new JTable( model );
现在每行数据都会在您读取数据时添加到模型中。