2017-12-11 19 views
-2

私は2つのクラスを持っています。最初はjTableを持つGUIともう1つはデータベースを照会するクラスです。 同じクラス内のテーブルに行を追加すると問題はありません。私はこのように使いました:別のクラスからjTableを取り込む

((DefaultTableModel) table.getModel()).addRow(values); 

valuesは、行の内容を保持するオブジェクトです。 これは問題なく動作しています。しかし、移入は別のクラスから行う必要があります。だから私は、クエリのクラスを持っている:

((DefaultTableModel) rg.table.getModel()).addRow(values); 

rgは、GUIクラスのオブジェクトですが。 table公開です。

これは例外をスローすることさえできません。

クエリクラスで変更する必要はありますか?ここに私の方法は、クエリクラスにあります:

public void selectPassengers(int rows) { 
     PreparedStatement pst = null; 
     ResultSet rs = null; 
     String query = "SELECT * FROM brs.passenger"; 
     try { 
      pst = con.prepareStatement(query); 
      rs = pst.executeQuery(); 
      Object[] attributes = new Object[9]; 

      Register rg = new Register(); 


      while (rs.next()) { 
       attributes[0] = String.valueOf(rs.getString(1)); 
       attributes[1] = rs.getString(2); 
       attributes[2] = rs.getString(3); 
       attributes[3] = rs.getString(4); 
       attributes[4] = rs.getString(5); 
       attributes[5] = rs.getString(6); 
       attributes[6] = rs.getString(7); 
       attributes[7] = rs.getString(8); 
       attributes[8] = rs.getString(9); 
       ((DefaultTableModel) rg.table.getModel()).addRow(attributes); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
  • DBからのフェッチデータが細かいです。私はそれらをコンソールに印刷することができました。
  • jTableはが正しく構築されていると仮定します。 は正しく行を挿入できますが、GUIクラス自体(jTableがあるところの クラス)内にしか挿入できないため、これを伝えることができます。
  • 挿入ロジックを別のクラス(クエリクラス)に移動すると、私が詰まっている になります。
+2

コードを表示せずにバグについて質問しているので、私はこの質問をd​​ownvotedしました。具体的なコードがなければ、問題は何かを推測することしかできません。これはあなたや将来の読者には役に立たないものです。問題の[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)を表示するために質問を編集することができれば、このdownvoteは取り消されるかもしれません。 –

+0

ありがとうございます。編集されました、私はそれが今では十分役に立つと思います。 –

+0

あなたのGUIクラスが消費できる "population"クラスから新しい 'TableModel'を生成してください – MadProgrammer

答えて

0

modelオブジェクトの前にframeオブジェクトを呼び出すことでこれを解決しました。 rg.model.addRow();の代わりに、GUIクラスでframeを公開してからrg.frame.model.addRow();を使用しました。

+0

最後の質問でコードの構造全体が間違っていると言われました。あなたがアドバイスを聞いていない場合、なぜあなたは質問をしますか?私はあなたのクラスのより良いデザインのための簡単なロジックを教えました。このようなパブリック変数を使用するのは適切な設計ではありません。クラスを適切に設計すると、問題はありません。あなたのコードの構造を正しいものにしてデータベースを忘れてしまったことが示唆されました。なぜあなたは適切な[mcve]を投稿しませんでしたか? – camickr

+0

アドバイスをいただき、ありがとうございます。それは感謝しています。しかし、a)すでに約2k行のコードを持つプロジェクトの80%をすでに完成しています。 b)アプリは一度だけ実行されます。だから、私はショートカットを探しました。もう一度お時間をありがとうございます:) –

関連する問題