2017-06-11 49 views
-1

大家好,我想請教一些用於幫助不大,我可以不明白的地方是我在我的代碼錯誤打開後的表告訴我只有一個球員的Java Swing JTable中顯示只有一排/行

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

} 

}

感謝所有爲你的時間:)和對不起英語

+0

爲了更好地提供幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 –

+0

請包含實例化並使用它的其餘代碼,以便其他人可以幫助調試。 –

+0

發佈我們[最小運行代碼](https://stackoverflow.com/help/mcve) – 1ac0

回答

2

想想你的邏輯。

在for循環中,您不斷創建「數據」數組的新實例。所以你創建的最後一個實例只包含最後一行的數據。

你的邏輯需要改變的東西,如:

DefaultTableModel model = new DefaultTableModel(column, 0); 

for (every row) 
{ 
    Object[] row = {....}; 

    model.addRow(row); 
} 

JTable table = new JTable(model); 

現在,當你讀數據的每一行數據添加到模型。