添加到 Jpanel 时 JTable 不可见

JTable not visible when added to Jpanel

我在前面板上有 JButton。单击它时,它应该以 table 格式显示数据。我已将数据和列名称分配给 JTable 参数,但它在前端不可见。我确认值已正确分配,但不确定为什么 table 在面板中不可见。这是我的代码:

private void disPlayDataActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:
       sql = "select * from persons";   

    try {
              Statement  st = con.createStatement();
              ResultSet rs = st.executeQuery(sql);
              ResultSetMetaData metaData = rs.getMetaData();
              int columnCount=metaData.getColumnCount();
              String[]columnNames=new String[columnCount];

              for(int i=0;i< columnNames.length;i++){
                columnNames[i]=metaData.getColumnName(i+1);

        }                       
        ArrayList<String[]> rows=new ArrayList<>();
        while(rs.next()){
            String[]currentrow=new String[columnCount];
            for(int i=0;i<columnCount;i++){
                currentrow[i]=rs.getString(i+1);

        }

              rows.add(currentrow);
        }   
        String[][] rowsArray=new String[rows.size()][columnCount];
        rowsArray=rows.toArray(rowsArray);
        JTable jt=new JTable(rowsArray,columnNames);
        jPanel2.add(jt);
        jt.setVisible(true);



    } catch (SQLException ex) {
        Logger.getLogger(EmployeePanel.class.getName()).log(Level.SEVERE, null, ex);
    }

    finally{

    }

}                   

你能试试这个吗,

JTable jt=new JTable(rowsArray,columnNames);  
jt.setBounds(30,40,200,300);   // you can put dimension as per your wish...

JScrollPane sp=new JScrollPane(jt);  
jPanel2.add(sp);
// code fore set visible true to jpanel2...

Swing 的布局API 很懒,就是这么设计的。当您准备好重新验证容器层次结构时,您需要告诉它。

JTable jt=new JTable(rowsArray,columnNames);
jPanel2.add(jt);
jPanel2.revalidate();
jPanel2.repaint();

一般来说,在不知道完整代码的情况下,简单地拥有一个主 JTable 并在需要时更改它的模型要容易得多。