2016-10-28 15 views
3

テーブルからアイテムを取得してJListに表示しようとしています。私はコードを実行し、何もJListに表示されず、エラーもありませんでした。私はコードをデバッグし、テーブル項目の長さまで数えました。 に続いてthis答えます。データベーステーブル項目がJListに表示されない

static Connection conn = new DBConnection().connect(); 
private JList listDepartments = null; 

public AddDepartment() { 
    listDepartments = new JList(); 
    listDepartments.setBounds(189, 33, 1, 1); 
    contentPane.add(listDepartments); 

    update_departments(listDepartments); 
} 

private static void update_departments(JList listDepartments) { 
    try { 
     String sql = "Select * FROM Departments"; 
     PreparedStatement pstmt = conn.prepareStatement(sql); 
     ResultSet rs = pstmt.executeQuery(); 
     DefaultListModel listModel = new DefaultListModel(); 
     while (rs.next()) { 
      System.out.println("inside while"); 
      String departmentName = rs.getString("Name"); 
      listModel.addElement(departmentName); 
     } 
     listDepartments.setModel(listModel); 
    } catch (Exception ex) { 
     JOptionPane.showMessageDialog(null, ex); 
    } 
} 

表の内容: 名:部署

列: - ユニークINT主キー、自動インクリメント、

名 -

ID VARCHAR(255)

+4

'listDepartments.setBounds(189、33、1、1);' setBounds(...)は使用しないでください。 Swingはレイアウトマネージャで使用するように設計されています。そして、間違いなく1の幅/高さを使用しないでください(これはペイントするものではありません)。まず、JList内のデータをハードコードする場所で作業する簡単な例を取得します。その後、Swingの基本を理解したら、データベースからデータを取得することによってコードをより動的にします。さらに助けが必要な場合は、ハードコードされたデータを使用するコードの適切な[SSCCE](http://sscce.org/)を投稿してください。 – camickr

+0

'SetBounds'はJListをdraged-dropしたときに自動的に作成されます。 – Munchmallow

+1

それを修正してください。 IDEのドラッグアンドドロップ機能を使用しないでください。自分でGUIを作成します。手動で作成したSwingコンポーネントでJListを使用する方法を示す作業例については、[リストの使用方法](http://docs.oracle.com/javase/tutorial/uiswing/components/list.html)のSwingチュートリアルを参照してください。 – camickr

答えて

2

で変更JTableに追記コードを追加public addDepartment()

model = new DefaultTableModel(); 
tableDepartments = new JTable(model); 

が削除されましたlistDepartments.setModel(listModel);からupdate_departments()機能。

+0

'public addDepartment()' BTW - 悪いです。 'addDepartment'がアクションを記述していることを考えると、私はそれをメソッド名と間違えました。 'DepartmentHandler'や' DepartmentQuery'と呼ばれる方が良いかもしれませんが、クラス名/スコネクタであれば大文字で始めるべきでしょう。 –

+0

もう一度ありがとうございます。 Eclipseは大文字で始まるクラス名を与えました。それで 'public AddDepartment()'が自動的に生成されたのです。 – Munchmallow

関連する問題