プロが教えるわが家の防犯対策術!

データベースから取得した結果を
JListに一覧にして表示させたいのですが、

list.setText(table);の部分の

setTextメソッドでシンボルが見つけられないと
エラーが出てしまいます。
JListにsetTextを使っているからなのだと思いますが、
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();

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()){

String name = rs.getString("name");
String address = rs.getString("address");

String table = "<html><table>" +
"<td>" + name + "</td>"+
"<td>"+ address +"</td>"+
"</table></html>";

list.setText(table);

}
//切断
con.close();

} catch(Exception ex) {
System.out.println(ex);

A 回答 (3件)

まあ、JListはわかりにくいのは確かですが、もう少し自分でなんとかするようにしないと、1から10まで全部「教えてください」になってしまいますよ。



>String[] Data = {};
>JList list = new JList(Data);
>ってことですか?

APIドキュメントにそうだと書いてありますね。

ただし、コンストラクタに渡す前に配列の中身を設定しておかなければダメですよ。

これでうまくいかない場合は、他に原因があります。
配列の中身を標準出力に出して確認してみるとか、順に調べてください。

それと、配列を使うのは間違いではありませんが、DefaultListModelを使った方がいろいろと便利です。

・配列のように上限を設定しておく必要がない
・表示した後でも、追加や削除ができる

という理由です。

この回答への補足

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;
}


一つしか表示されないです(泣

補足日時:2005/07/14 16:27
    • good
    • 0
この回答へのお礼

解決しました~~~
みなさんありがとうございます☆☆

お礼日時:2005/07/14 18:15

>ってことですか?


と書かれる前にとりあえず試してみましょう。
ヒントを得たのに、何も試さずに次々と質問をしては回答者に対して失礼です。

SwingコンポーネントのサンプルコードはJavaDocの中にリンクがあります。
一通り目を通してみてはいかがでしょうか?

この回答への補足

すみません、、
>ってことですか?
と書いたのは実行してたんですが
できなかったので、これでよかったのでしょうか?
という意味で書きました。

補足日時:2005/07/13 23:31
    • good
    • 0

JListは配列に対してnewしなければダメなのでは?



それと、setTextというメソッドはありましたっけ?

参考URL:http://java.sun.com/j2se/1.4/ja/docs/ja/api/java …

この回答への補足

>JListは配列に対してnewしなければダメなのでは?

String[] Data = {};
JList list = new JList(Data);

ってことですか?

>setTextというメソッドはありましたっけ
すみません、一度JListでできないみたいなんで
JLabelで試していてそのときsetTextを使ってたので
そのまま載せてしまいました。

補足日時:2005/07/13 20:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!