2

再び、mysql データベースからのデータを表示する際に JList に問題があります。以下のコードを使用しましたが、画面に何も表示されません。

JFrame f8 = new JFrame("Schedule");
f8.setVisible(true);
f8.setSize(1000, 1000);
JPanel jpa1 = new JPanel(new GridBagLayout());

String query = "SELECT * FROM Location";
DefaultListModel model = new DefaultListModel();
DefaultListModel model1 = new DefaultListModel();
try {
    Class.forName("oracle.jdbc.driver.OracleDriver");
    Statement stmt = null;
    ResultSet rs;
    Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/SPL", "root", "PWD");
    stmt = (Statement) conn.createStatement();
    rs = stmt.executeQuery(query);
    while (rs.next()) {
        String stadium = rs.getString("Stadium");
        String city = rs.getString("City");
        model.addElement(stadium);
        model1.addElement(city);
    }
    JList list = new JList(model);
    JList list1 = new JList(model1);
    f8.add(jpa1);
    jpa1.add(list);
    list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
    list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
    list.setVisibleRowCount(1);
    JScrollPane listScroller = new JScrollPane(list);
} catch (SQLException e) {
    System.out.println("Message   : " + e.getMessage());
}

どこが間違っているのか教えてください。

4

2 に答える 2

7

読みにくいフォーマットされていないコードは言うまでもなく、コードのスニペットに基づいて問題が何であるかを言うのは難しいですが...

  • 1 つのリストを JPanel に追加しますが、同じリストを JScrollPane に追加し、JScrollPane を無視します。
  • GridBagConstraints なしで GridBagLayout を使用しています
  • Swing イベント スレッドで多くの JDBC コードを実行しているため、このスレッドがロックされる恐れがあります。
  • JList list1 を 1 つ作成しますが、それをどこにも追加しません。

次の点を考慮する必要があります。

  • GUI の外部でデータベース コードをテストする。問題を分割して解決しないと、結果に影響を与える可能性のある変数が多すぎて、何が原因なのかを知ることが難しくなります。
  • コードにデバッグ ステートメントを配置するか、デバッガーを使用して最初にエラーの場所を見つけます。
  • ボランティアに助けを求めるときは、適切にフォーマットされたコードのみを投稿してください。他人のコードを理解するのは非常に難しいので、これ以上難しくしないように努力する必要があります。ご尽力に感謝いたします。
于 2012-08-27T21:21:36.353 に答える
5

うなぎでいっぱいのホバークラフトは頭に釘を打つところだったが、あなたのコードのセクション全体を取り出し始めるまで、私はそれを見なかったので、彼を許します.

コードの最後の行は次のとおりです

JScrollPane listScroller = new JScrollPane(list);

このスクロール ペインを UI に追加することはありません。list前の親 ( jpa1) から を削除し、スクロール ペインに追加する効果があります。これにより、画面に何も表示されなくなります。

Hovercraft Full of Eels の推奨事項のすべてに従い、この最後の問題を修正する方法を見つけます...

jpa1.add(new JScrollPane(list));

ちょうどそれを行う必要があります

于 2012-08-27T21:33:58.320 に答える