2017-02-09 7 views
0
public void GetUsersName(){ 

     try 
     { 
      java.sql.Connection con = DriverManager.getConnection(url + dbName, userName, password); 

      java.sql.Statement s = con.createStatement(); 
      ResultSet result = s.executeQuery("SELECT Username FROM tblcustomers ORDER BY UserID"); 

      if(result != null){ 
       while (result.next()) 

       { 


        ListUserNames.usersJList.setListData(Username); 
        } 




       } 

      s.close(); 
      con.close(); 

     } catch (SQLException e) 
     { 
      System.out.println("Error: " + e); 
     } 

私のJList Panelを作成するクラスのmy codeから別のClassに挿入します。私は自分のJScrollPaneを完全に見ることはできませんが、唯一の問題はユーザー名を挿入することができないことですが、例えばテスト配列から他の値を見ることができます。私のデータベースの名前を別のクラスで作ったJLIstに入れるには?

public class ListUserNames extends JPanel{ 

    public static JList<String> usersJList; 



    public ListUserNames() 
    { 

     setLayout(new FlowLayout()) ; 

     usersJList =new JList<String>(); 
     usersJList.setVisibleRowCount(10) ; 


     usersJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) ; 

     // add a)Scroll Pane containing)List to frame 
     JScrollPane sp = new JScrollPane(usersJList); 
     sp.setSize(300, 400); 
     add(sp); 

}}

答えて

0

JListは、それが初期化されます一度elmentを追加または削除するには、no mehtodを持っていません。代わりにJListListModelを使用できます。

例:

public class ListUserNames extends JPanel { 

    public static DefaultListModel<String> listModel = new DefaultListModel<>(); 

    public ListUserNames() { 

     setLayout(new FlowLayout()); 

     JList<String> usersJList = new JList<String>(listModel); 

     usersJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 

     // add a)Scroll Pane containing)List to frame 
     JScrollPane sp = new JScrollPane(usersJList); 
     sp.setSize(300, 400); 
     add(sp); 
    } 
} 

し、あなたの方法を取得:

public void getUsersName() throws SQLException { 
    java.sql.Connection con = DriverManager.getConnection(url + dbName, userName, password); 
    JList<String> list = new JList<>(); 
    PreparedStatement ps = con.prepareStatement("SELECT Username FROM tblcustomers ORDER BY UserID"); 
    ResultSet result = ps.executeQuery(); 

    DefaultListModel<String> listModel = new DefaultListModel<>(); 
    if (result != null) { 
     while (result.next()) 

     { 
      ListUserNames.listModel.addElement(result.getString("Username")); 
     } 

    } 

    ps.close(); 
    con.close(); 
} 
0

あなたはリストに静的aceessを使用しています。 ListUserNames.usersJList.setListData(ユーザー名);

つまり、「usersJList」はまだ初期化されていない可能性があります。 あなたの缶では、そうではありませんでした。

2液。 ListUserNamesで

ソリューション1

初期化 "usersJList"。

public static JList usersJList = new JList();

これは推奨される方法

ソリューション2

第二の溶液userJList

コード初期化するための方法で行うことではありません。 GetUsersName.java

public void GetUsersName(){ 
    /*-----your other codes----*/ 
     JList<String> usersJList = ListUserNames.getUsersJList(); 
     if(result != null){ 
      while (result.next()) 
      { 
       usersJList.setListData(Username); 

      } 

      } 

    /*-----your other codes----*/ 
} 

をListUserNames.java

public class ListUserNames extends JPanel{ 

private static JList<String> usersJList; 

    public static JList<String> getUsersJList(){ 

     if (usersJList == null){ 
      usersJList =new JList<String>(); 
     } 
     return usersJList; 
    } 


    public ListUserNames(){ 
     getUsersJList(); 

     setLayout(new FlowLayout()) ; 

     usersJList.setVisibleRowCount(10) ; 
     usersJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) ; 

     // add a)Scroll Pane containing)List to frame 
     JScrollPane sp = new JScrollPane(usersJList); 
     sp.setSize(300, 400); 
     add(sp); 

    } 
} 
関連する問題