2016-11-15 4 views
-3

私はデータベースから検索した情報を画面に表示する必要があります。 これについては、私は情報を検索し、ArrayListに格納されています。ループforを使用してArrayListを通過し、各ループをJTextAreaにマウントする必要があります。私はJavaでGUIを持っていますが、進める方法がわかりません

私はforのループをArrayListに通過させて画面をマウントしようとしましたが、何もできませんでした。

スクリーンコード:

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import java.sql.*; 
import java.util.*; 

public class TelaSugestao extends JFrame implements ActionListener { 
    public void actionPerformed(ActionEvent e) {} 

    private JTextArea txtArea; 

    private Sugestao sugestao; 
    private Connection conn; 

    public TelaSugestao(Connection conn) { 
     super("Tela sugestao"); 

     txtArea = new JTextArea(3,3); 

     this.conn = conn; 

     Container caixa = getContentPane(); 
     caixa.setLayout(new FlowLayout()); 

     caixa.add(txtArea); 

     setSize(432,400); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setVisible(true); 
    } 

    // Trying to mount the screen every time the For runs the ArrayList. 
    public void montaTela() { 
     Sugestao sugestao = new Sugestao(); 
     ArrayList<Sugestao> listaSugestao = sugestao.carregaSugestao(conn); 
     for (int i = 0; i < listaSugestao.size(); i++) { 

     } 
    } 
} 

私は、データベースの情報については、この方法を探しています:

public ArrayList<Sugestao> carregaSugestao(Connection conn) { 
    String sqlSelect = "Select id, sugestao from tabelaTeste where id_sugestao = ?"; 
    ArrayList<Sugestao> listaSugestao = new ArrayList<>(); 

    try (PreparedStatement stm = conn.prepareStatement(sqlSelect);) { 
     stm.setInt(1, getIdSugestao()); 
     try (ResultSet rs = stm.executeQuery();) { 
      while (rs.next()){ 
       Sugestao s = new Sugestao(); 
       s.setIdSugestao(rs.getInt("id_sugestao")); 
       s.setSugestao(rs.getString("sugestao")); 
       listaSugestao.add(s); 
       guardaSugestao = carregaSugestao(conn); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } catch (SQLException e1) { 
     System.out.print(e1.getStackTrace()); 
    } 
    return listaSugestao; 
} 

あなたがこれを行う方法を説明してくださいもらえますか?

+0

あなたは、あなたのarraylistのすべてのオブジェクトの新しいテキストエリアが必要ですか?あなたの配列リストに含まれるテキストをテキストに書きたいのですか? – XtremeBaumer

+0

これは、私のarraylistが含まれているすべてのオブジェクトのテキストエリアです Google翻訳者、申し訳ありません –

答えて

0

あなたのコンストラクタからこれらの2行を削除:txtArea = new JTextArea(3,3); caixa.add(txtArea);方法は今に変更します。

public void montaTela(Container pane){ 
     Sugestao sugestao = new Sugestao(); 
     ArrayList<Sugestao> listaSugestao = sugestao.carregaSugestao(conn); 
     for(int i = 0; i < listaSugestao.size(); i++){ 
     txtArea=new JTextArea(); 
     //add Text to your txtArea with .append(string) 
     pane.add(txtarea); 
     } 
    } 

としてメソッドを呼び出します。montaTela(caixa) <は - コンストラクタで呼ばれている必要があります。それ以外の場合はコンテンツペインのゲッターを作成します

+0

私のデータベースには5つの提案が含まれています。これらの5つの提案が検索してArrayListに格納されています。それぞれを別のTextAreaに入れたい、 ArrayListを通過するために、各ループは別の画面を作ります。しかし、私は試してみることができませんでした。 Google翻訳者、申し訳ありません –

+0

少なくともあなたは何をしたいかを知っています – XtremeBaumer

関連する問題