2016-11-15 39 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

你想爲你的數組列表中的每個對象都創建一個新的textarea?或者你想寫你的數組列表中的文本到textare? – XtremeBaumer

+0

這是一個針對每個對象的textarea,我的arraylist包含 谷歌翻譯,對不起 –

回答

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) < - 需要構造函數被調用。否則爲內容窗格創建一個getter

+0

我的數據庫包含5個建議,這5個建議,我搜索和存儲在ArrayList中,我想把每個不同的TextArea,所以我試圖使用爲了遍歷ArrayList,所以每個循環都會創建一個不同的屏幕。但我嘗試過,但我做不到。 谷歌翻譯,對不起 –

+0

至少我現在知道你想做什麼 – XtremeBaumer

相關問題