2016-11-04 19 views
0

私は、選択した国の時計とゼムゾーンを表示するプログラムを作っています。 ボタンをクリックすると時刻がjLabelに表示されます。 問題は、一度クリックすると、ラベルに時間が表示されますが、もう一度クリックすると、存在するjlabelの日付(テキスト)に書き換えられることです。Jlabel Clock java swing

書き換えを行わないで日付を表示する方法を教えてください。 クリックした回数が増えると、その時間は表示されません。ここで

は私のコードです:

public class Window extends JFrame { 

    JLabel title, text,date1,label1; 
    JTextField country; 
    JButton search; 

    private static final String DATE_FORMAT = "dd-M-yyyy hh:mm:ss a"; 

    public Window() { 
     super("Genesys"); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setSize(600,470); 
     setVisible(true); 
     setLayout(null); 

     //------Labels------- 
     title = new JLabel ("Genesys Time"); 
     add (title); 

     text = new JLabel("Continent/Country:"); 
     add(text); 

     //--------TextFileds------ 
     country = new JTextField(); 
     add (country); 

     //----------Buttons------- 
     search = new JButton("Cauta"); 
     add (search); 

     title.setBounds(10,1,100,100); 
     text.setBounds(10,100,150,20); 
     country.setBounds(150,100,200,20); 
     search.setBounds(10,150,100,20); 

     search.addActionListener(new csearch()); 
    } 

class csearch implements ActionListener { 

    public void actionPerformed(ActionEvent event) { 
     //dispose(); 
     //WindowTime wt = new WindowTime(null); 

     date1 = new JLabel(); 
     date1.setVisible(false); 

     SimpleDateFormat formatter = new SimpleDateFormat(DATE_FORMAT); 
     Date date = new Date(); 
     // String dateInString = "02-11-2016 12:06:55 AM"; 
     // Date date = formatter.parse(dateInString); 
     TimeZone tz = TimeZone.getDefault(); 

     // From TimeZone Asia/Singapore 
     System.out.println("TimeZone : " + tz.getID() + " - " + tz.getDisplayName()); 
     System.out.println("TimeZone : " + tz); 
     System.out.println("Date (Ro - UTC+02:00) : " + formatter.format(date)); 

     // To TimeZone America/New_York 
     SimpleDateFormat sdfAmerica = new SimpleDateFormat(DATE_FORMAT); 
     SimpleDateFormat sdfParis = new SimpleDateFormat(DATE_FORMAT); 
     DateTime dt = new DateTime(date); 
     DateTimeZone dtZone = DateTimeZone.forID(country.getText()); 
     DateTime dtus = dt.withZone(dtZone); 
     TimeZone tzInAmerica = dtZone.toTimeZone(); 
     Date dateInAmerica = dtus.toLocalDateTime().toDate(); //Convert to LocalDateTime first 

     sdfAmerica.setTimeZone(tzInAmerica); 

     date1.setText(String.valueOf(dateInAmerica));     
     add(date1); 

     date1.setBounds(10,200,1000,40); 

     } 
    }   
}   

誰も私を助けてもらえますか?複数回クリックした場合

答えて

2

は、時間が

問題は、あなたが新しいのJLabelを作成し、1の上に各ラベルの塗料のテキストので、フレームに追加しておくことで読めません別のボタンをクリックするたびに新しいJLabelを作成しないでください。

代わりにラベルを作成し、フレームを作成するときにラベルをフレームに追加します。

次に、あなただけの使用:

label.setText(...); 

ラベルのテキストを変更します。

また、ヌルレイアウトを使用しないでください。 Swingはレイアウトマネージャで使用するように設計されています。詳しくは、Layout ManagersのSwingチュートリアルのセクションを読んでください。

+0

ありがとうございました。どのように私はこのような間違いをしたのか分かりません。 – Bogdan