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 );

现在每行数据都会在您读取数据时添加到模型中。