[英]Printing ArrayList to JLabel not printing on GUI
我目前面臨一個問題,我有一個問題的答案ArrayList
並且我正在嘗試打印出 JLabel 的每個答案,因為這將顯示正在添加到問題庫中的問題。
問題是它只會打印一個答案,並且可能有 5 個答案存儲在數組中。 它正在將它打印到我試過把this.add(answerLabel);
在 for 循環內部和外部。
我是接近這個最好的方法嗎?
answerLabel = new JLabel();
answerLabel.setBounds(100, 100, 300, 300);
for (int i = 0; i < answers.size(); i++) {
answerLabel.setText("Answer " + i + ": " + answers.get(i));
System.out.println("Answer " + i + ": " + answers.get(i));
this.add(answerLabel);
}
您需要考慮的是在添加前一個JLabel
實例后創建一個新實例
answerLabel = new JLabel();
answerLabel.setBounds(100, 100, 300, 300);
for (int i = 0; i < answers.size(); i++) {
answerLabel.setText("Answer " + i + ": " + answers.get(i));
System.out.println("Answer " + i + ": " + answers.get(i));
this.add(answerLabel);
answerLabel = new JLabel();
answerLabel.setBounds(100, 100, 300, 300);
}
您的代碼存在一些問題:
setBounds
告訴我們您正在使用null-layout
,請參閱: 為什么在 Swing 中使用 null 布局不受歡迎? 如果這還不足以說明使用它的問題是什么,這里有一個例子。 而是使用布局管理器,讓 Swing 為您計算
每次for
進行迭代時,您都會在JLabel
上調用setText
,這會覆蓋您在上一次迭代中所擁有的內容,因此您有 2 個選項:
在每次迭代時創建一個新的JLabel
實例
JPanel pane = new JPanel(); pane.setLayout(new BoxLayout(pane, BoxLayout.PAGE_AXIS)); for (int i = 0; i < answers.size(); i++) { answerLabel = new JLabel(); answerLabel.setText("Answer " + i + ": " + answers.get(i)); pane.add(answerLabel); } this.add(pane);
創建一個String
和 append 的單個實例,將所有文本都添加到它,然后使用該String
的值在JLabel
上調用setText
一次
String text = ""; for (int i = 0; i < answers.size(); i++) { text += "Answer " + i + ": " + answers.get(i) + "\n"; //Replace this for a StringBuilder, just making this an example } answerLabel.setText(text); this.add(answerLabel);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.