2017-04-07 56 views
-2

我已經從數據庫填充了JTable。但桌子沒有出現。我無法弄清代碼的問題。我無法理解問題是佈局還是代碼塊從數據庫中檢索數據。此外,我沒有收到任何異常消息。我在代碼中添加了frame.getContentPane().add(scroll, BorderLayout.CENTER);,仍然無法使用表格。請看附件圖片我得到。 enter image description here儘管從數據庫填充了JTable,但不會顯示

import java.awt.EventQueue; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 

import java.awt.BorderLayout; 
import javax.swing.JTable; 
import javax.swing.table.DefaultTableModel; 

import controller.DB_con; 

public class Jtable { 

    private JFrame frame; 
    private JTable table; 
    String[] columnNames = {"ID", "name", "username", "contact", "GENDER"}; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        Jtable window = new Jtable(); 
        window.frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
        System.out.println(e.toString()); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the application. 
    */ 
    public Jtable() { 
     initialize(); 
    } 

    /** 
    * Initialize the contents of the frame. 
    */ 
    private void initialize() { 
     frame = new JFrame(); 
     frame.setBounds(100, 100, 450, 300); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.getContentPane().setLayout(new BorderLayout(0, 0)); 

     table = new JTable(); 
     frame.getContentPane().add(table, BorderLayout.CENTER); 
     DefaultTableModel model = new DefaultTableModel(); 
     model.setColumnIdentifiers(columnNames); 

     table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); 
     table.setFillsViewportHeight(true); 
     JScrollPane scroll = new JScrollPane(table); 
     frame.getContentPane().add(scroll, BorderLayout.CENTER); 
     scroll.setHorizontalScrollBarPolicy(
     JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     scroll.setVerticalScrollBarPolicy(
     JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 

     try 
     { 
      Connection sqlCon = DB_con.getSQLConnection(); 
      PreparedStatement ps = sqlCon.prepareStatement("select id,name,username,contact,gender from temp_tbl"); 

      int i = 0; 
      ResultSet rs = ps.executeQuery(); 
      while(rs.next()) 
      { 
       String id = rs.getString("id"); 
       String name = rs.getString("name"); 
       String username = rs.getString("username"); 
       String contact = rs.getString("contact"); 
       String gender = rs.getString("gender"); 
       model.addRow(new Object[]{id, name, username, contact, gender}); 
       i++; 
      } 
     } 
     catch(Exception ex) 
     { 
      System.out.println(ex.toString()); 
     } 

    } 

} 
+0

(1)crossposted:https://coderanch.com/t/678176/的Java /填充-JTable的數據庫值。退出交叉發佈。它討厭花時間回答一個問題,只是爲了發現它已經在另一個論壇上得到了回答。 – camickr

回答

2

您添加JTable到的圖像,然後將其添加到JScrollPane但從未添加JScrollPane到什麼...

一個組件只能屬於一個容器內,所以當你做JScrollPane scroll = new JScrollPane(table);,你從框架中刪除JTable

添加frame.getContentPane().add(scroll, BorderLayout.CENTER);你所創建的JScrollPane

後,也從未應用TableModelJTable

table.setModel(model); 
frame.getContentPane().add(scroll, BorderLayout.CENTER); 
+0

我已經按照您的建議添加了代碼,但仍未獲取表格。請幫忙!!! – nischalinn

+0

實際上,它確實有效,但是你永遠不會將'TableModel'應用到'JTable',所以它顯示一個空表 – MadProgrammer