- - PR -
JListに一覧にして表示
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-07-13 22:20
データベースから取得した結果を
JListに一覧にして表示させたいのですが、 String table = "<html><table>" 〜〜〜 Data.??????(table); ??????をどのメソッドにすればよいかわかりません。 JLabelならsetTextでいいのですが、一件分しか 表示されず、JListにして、登録されているデータの件数分の すべてのnameとaddressを表示させたいのですが。 APIを探したのですがなかなかわかりません どう対処したらよいでしょうか?? ---------------------------------------------------- private Connection connect() throws Exception{ Class.forName("com.mysql.jdbc.Driver"); String url = "jdbc:mysql://localhost/???"; String user = "root"; String pass = ""; Connection con = DriverManager.getConnection(url,user,pass); return con; } Bookmark(){ JTabbedPane tabbedPane = new JTabbedPane(); tabbedPane.addTab("表示", createPanel1()); } private JPanel createPanel1(){ JPanel p = new JPanel(); String[] Data = {}; JList list = new JList(Data); JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(list); scrollPane.setPreferredSize(new Dimension(480, 340)); p.add(scrollPane); try{ //DBに接続 Connection con = connect(); //SQL発行先ほど指定したConnection con を利用 Statement stmt = con.createStatement(); String sql ="select * from Browser"; ResultSet rs = stmt.executeQuery(sql); //結果の取得 while(rs.next()){ String name = rs.getString("name"); String address = rs.getString("address"); String table = "<html><table>" + "<td>" + name + "</td>"+ "<td>"+ address +"</td>"+ "</table></html>"; Data.??????(table); } //切断 con.close(); } catch(Exception ex) { System.out.println(ex); |
|
投稿日時: 2005-07-14 04:59
質問者本人です。
色々試してたんですが Listにデータの表示ができたんですが、一件分の name,addressしか表示されません! 全部表示させたいのですが、どうしたらよいかもうわかりません。。 ------------------------------------------------------ JList list = new JList(); JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(list); scrollPane.setPreferredSize(new Dimension(480, 340)); p.add(scrollPane); try{ //DBに接続 Connection con = connect(); //SQL発行先ほど指定したConnection con を利用 Statement stmt = con.createStatement(); String sql ="select * from Browser"; ResultSet rs = stmt.executeQuery(sql); //結果の取得 while(rs.next()){ //検索結果をHTMLに整形 String name = rs.getString("name"); String address = rs.getString("address"); String[] Data = {name,address}; list.setListData(Data); } //切断 con.close(); |
|
投稿日時: 2005-07-14 08:28
JListの使い方を本質的に誤っています。
こちらを見ながらもう一度試してみるとよいでしょう。 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/JList.html http://java.sun.com/docs/books/tutorial/uiswing/components/list.html http://java.sun.com/products/jfc/tsc/tech_topics/jlist_1/jlist.html 最近未記入さん多すぎ…もう誰が誰やらワカランですよ |
|
投稿日時: 2005-07-14 12:26
申しわけありません。
koeさんの貼っていただいたリンク先を見て ずっと試しているのですが本当に力不足で、 解かりません。 エラーは出ないのに、実行しても表示されていないし、 >JListの使い方を本質的に誤っています の部分が恥ずかしい話自分で理解できてないので やみくもにリンク先の例を試しているだけで、 どう本質的に誤っているのか解かりません。。 |
|
投稿日時: 2005-07-14 12:43
本当に読まれました?
koeさんが提示されたhttp://java.sun.com/docs/books/tutorial/uiswing/components/list.html の中の 「Adding Items to and Removing Items from a List」で、リストの要素を一ヶずつ追加する方法がかかれていますよ。 また同じ節にListDemo.javaというサンプルも提示されていましたが、ダウンロードして実行されましたか? ちなみに、JList#setListDataは乱暴にいうと、リストの全要素を渡された引数で初期化するものです。配列の要素が一ヶなら、リストには一ヶしか表示されません。 |
|
投稿日時: 2005-07-14 14:21
正しいのか自信がないんですが、
ここまで記述しているのですが、 これでもデータベースに登録しているnameの一番最初に 登録された一件分のデータしか表示されていません //SQL発行先ほど指定したConnection con を利用 Statement stmt = con.createStatement(); String sql ="select * from Browser"; ResultSet rs = stmt.executeQuery(sql); //結果の取得 while(rs.next()){ String name = rs.getString("name"); DefaultListModel listModel = new DefaultListModel(); listModel.addElement(name); JList list = new JList(listModel); JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(list); scrollPane.setPreferredSize(new Dimension(480, 340)); p.add(scrollPane); |
|
投稿日時: 2005-07-14 14:35
ループがどこで終わっているのかわからないのですが。
アイテムが1コのリストをどんどん作って、 そのリストをPaneにどんどん上書きしている、 なんてことはないですか? |
|
投稿日時: 2005-07-14 14:40
>ループがどこで終わっているのかわからないのですが。
こうなっていますが、、(泣 private JPanel createPanel1(){ JPanel p = new JPanel(); try{ //DBに接続 Connection con = connect(); //SQL発行先ほど指定したConnection con を利用 Statement stmt = con.createStatement(); String sql ="select * from Browser"; ResultSet rs = stmt.executeQuery(sql); //結果の取得 while(rs.next()){ String name = rs.getString("name"); DefaultListModel listModel = new DefaultListModel(); listModel.addElement(name); JList list = new JList(listModel); JScrollPane scrollPane = new JScrollPane(); scrollPane.getViewport().setView(list); scrollPane.setPreferredSize(new Dimension(480, 340)); p.add(scrollPane); } //切断 con.close(); } catch(Exception ex) { System.out.println(ex); } return p; } |