2016-11-15 18 views
0

EDIT:質問の延長How to Get these JPanels to be Display in my JFrameJLabelsの表示文字列をArrayListに保存するにはどうすればよいですか?

ボタンを押すと、別のフォルダや別々のファイルからさまざまな種類の単語をループすることによって文法的に正しい文章を作成する「文章ランダム化」を作成しようとしています。私が遭遇している問題は、JLabel内で検索された単語をどのように表示するのか把握できないことです。ここに私のコードは、これまでに明らかにすることである:

package user_interface; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Component; 
import java.awt.Font; 
import java.util.ArrayList; 

import javax.swing.BorderFactory; 
import javax.swing.BoxLayout; 
import javax.swing.ImageIcon; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

import code.sentence; 
import user_interface.RandomButtonListener; 

public class sentenceUI { 

    private sentence _s; 
    private JButton _rando; 

    public sentenceUI() { 
     _s = new sentence(this); 
     JFrame f = new JFrame("Ryan Ellis' Lab 9"); 
     f.setLayout(new BoxLayout(f.getContentPane(), BoxLayout.Y_AXIS)); 


     JPanel topPanel = new JPanel(); 
     f.add(topPanel); 

     JPanel lowerPanel = new JPanel(); 
     f.add(lowerPanel); 

     _rando = new JButton("Random Sentence"); 
     _rando.addActionListener(new RandomButtonListener(_s, this)); 
     lowerPanel.add(_rando); 

     ArrayList<JLabel> _labels = new ArrayList<JLabel>(); 
     Color c1 = Color.BLUE; 
     Color c2 = new Color(255 - c1.getRed(), 255 - c1.getGreen(), 255 - c1.getBlue()); 
     for(int i = 0; i < 8; i++){ 
      JLabel _l = new JLabel(); 
      _l.setOpaque(true); 
      _l.setBackground(c1); 
      _l.setForeground(c2); 
      Color temp = c1; 
        c1 = c2; 
        c2 = temp; 
      _l.setBorder(BorderFactory.createEmptyBorder(0,0,8,5)); 
      _l.setFont(new Font("Comic Sans", Font.BOLD, 18)); 
     topPanel.add(_l); 
     } 

     ArrayList<String> _slst = new ArrayList<String>(); 
      _slst.add("WordLists/adjectives.txt"); 
      _slst.add("WordLists/adverbs.txt"); 
      _slst.add("WordLists/determiners.txt"); 
      _slst.add("WordLists/nouns.txt"); 
      _slst.add("WordLists/verbs.txt"); 

     ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>(); 
     list.add(_slst); 
      int i = 0; 
      list.get(i % 5); 



     f.setVisible(true); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     f.pack(); 

    } 

    private void createRButton(String string, JPanel lowerPanel) { 
     createRButton("Random", lowerPanel); 


    } 
} 
+0

なぜ1文字列にしてjtextfieldに追加するのですか? – XtremeBaumer

+0

あなたはファイルをどこから見ますか? – XtremeBaumer

+0

[*これらのJLabelをJFrameに表示する方法は?*](http://stackoverflow.com/q/40602016/230513);元の質問を明確にして引用してください。 – trashgod

答えて

0

あなたはランダムな文を生成した後、後で自分のインスタンスを取得することができるように、リストのいくつかの並べ替えにJLabel Sを格納する必要があります。

次に、あなたは

jlabel.setText(string) 

を行うことができますし、あなたはすべての単語を追加した後、あなたはJLabelのの表示を更新する(jpanel.repaint()と)のJPanelを再描画する必要があります。

+0

JLabelsをArrayList _labelsに追加しました。 JLabel.setText(string)はどこに配置しますか?私はそれを動作させるように見えることができない、私はJLabelsの後にそれを配置しようとしたforループの後、そしてArrayListの直後に単語自体のために、私は私が本当に理解しているか分からないそれをやって、ハハ。 – sqwert

+0

あなたのコードが言ったように、文を生成したとき。 'setText'メソッドは、JLabelが表すテキストを設定するためのメソッドです –

関連する問題