添加到 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
并在需要时更改它的模型要容易得多。
我在前面板上有 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
并在需要时更改它的模型要容易得多。