2016-09-15 7 views
0

My JLabelがこれらのテキスト値のすべてに設定されていません。JLabelを複数のテキスト値に設定できません

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class MultipleLables{ 
    static JFrame framey; 
    static JLabel lbl; 
    static JButton btn; 

    public static void GUIWindow() { 
     framey = new JFrame("Test"); 
     framey.setSize(100, 100); 
     framey.setLayout(new FlowLayout()); 
     lbl = new JLabel("Example Text"); 
     btn = new JButton("Change Text"); 
     btn.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 
       try { 
        lbl.setText("First Text"); 
        Thread.sleep(1000); 
        lbl.setText("Second Text"); 
        Thread.sleep(1000); 
        lbl.setText("Third Text"); 
       }catch (Exception e) { 
        //Don't really care if the program dies 
       } 

      } 
     }); 
     framey.add(lbl); 
     framey.add(btn); 

     framey.setVisible(true); 
    } 

    public static void main(String[] args) { 
     GUIWindow(); 
    } 
} 

出力ではなく三つの値を次々に表示する「テキスト三」にJLabelのの値を設定し、その後、2秒待つことになります。ここで間違っていることは私には分かりません。

+1

あなたの問題はこの[リンク](http://stackoverflow.com/questions/7251675/how-to-update-a-jlabel-every-time-with-a-while)で説明されている問題と似ています-loop-a-delay)を使用します。それを見てください。 – greenPadawan

答えて

0

質問から、あなたが直面している問題は何か明確ではありません。他のユーザーが実行してテストできるコードの例を追加してください。

あなたは、JLabelの中bまたは「C」を変数aの値を参照しようとしている場合は、テキスト「A」に設定されて何が今やっている

GUIWindow.text.setText(a.toString()); 

のようなコードが必要になります変数aの値ではありません。 変数a,bまたは 'c'のデータ型がわかりません。彼らが適切なtoString()の実装を持っているなら(おそらくSystem.out.println()があなたに望ましい出力を与えているように)、上記のコードはうまくいくはずです。そうでない場合は、これらの変数に対して適切なメソッドを呼び出して、必要なテキストを表示する必要があります。

+0

申し訳ございません、私のプロジェクトのソースコードをこのサイトに追加します –

+1

http://stackoverflow.com/help/mcveのガイドラインを使用して再投稿できます –

+0

投稿した回答に推奨変更を行ってみましたか? ? –

0

スイングタイマーを作成して実行することでこの問題を解決できました。ここにコードがあり、内部に修正があります。

import java.awt.FlowLayout; 
import java.awt.event.*; 
import javax.swing.*; 

public class MulttipleLables{ 
static JFrame framey; 
static JLabel lbl; 
static JButton btn; 
static Timer t; 
static int i; 

public static void GUIWindow() { 
    framey = new JFrame("Test"); 
    framey.setSize(100, 100); 
    framey.setLayout(new FlowLayout()); 
    lbl = new JLabel("Example Text"); 
    btn = new JButton("Change Text"); 
    btn.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e1) { 
      t = new Timer (1000,new ActionListener() { 
       public void actionPerformed(ActionEvent e2) { 
        ; 
        lbl.setText("First Text"); 
        switch (i) { 
        case 1: 
         lbl.setText("Second Text"); 
         i++; 
         break; 
        case 2: 
         lbl.setText("Third Text"); 
         i++; 
         break; 
         default: 
          i++; 
        } 
        if (i == 3) { 
         t.stop(); 
         i = 0; 
        } 
       } 
      }); 
      t.start(); 
     } 
    }); 
    framey.add(lbl); 
    framey.add(btn); 

    framey.setVisible(true); 
} 

public static void main(String[] args) { 
    GUIWindow(); 
} 
} 

私にコンパイラはありませんが、私はこのコードが必要なものであれば動作するはずです。

関連する問題