- PR -

JListに一覧にして表示

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2005/06/03
投稿数: 22
投稿日時: 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/06/03
投稿数: 22
投稿日時: 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();
koe
大ベテラン
会議室デビュー日: 2003/07/13
投稿数: 198
投稿日時: 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/06/03
投稿数: 22
投稿日時: 2005-07-14 12:26
申しわけありません。
koeさんの貼っていただいたリンク先を見て
ずっと試しているのですが本当に力不足で、
解かりません。

エラーは出ないのに、実行しても表示されていないし、
>JListの使い方を本質的に誤っています
の部分が恥ずかしい話自分で理解できてないので
やみくもにリンク先の例を試しているだけで、

どう本質的に誤っているのか解かりません。。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 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/06/03
投稿数: 22
投稿日時: 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);
Edosson
ぬし
会議室デビュー日: 2004/04/30
投稿数: 675
投稿日時: 2005-07-14 14:35
ループがどこで終わっているのかわからないのですが。
アイテムが1コのリストをどんどん作って、
そのリストをPaneにどんどん上書きしている、
なんてことはないですか?
未記入
常連さん
会議室デビュー日: 2005/06/03
投稿数: 22
投稿日時: 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;

}

スキルアップ/キャリアアップ(JOB@IT)