2016-11-04 71 views
0

我正在制作一个程序,显示所选国家的时钟和zime区域。 单击按钮时,该时间显示为jLabel。 问题是,当我点击一次时间显示在标签中,但当我点击第二个时间被重写为现有的标签日期(文本)。Jlabel时钟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并将其添加到框架,使每个标签油漆过一个顶部的文本另一个。每次单击按钮时都不要创建新的JLabel。

相反,创建标签并在创建框架时将其添加到框架。

然后你只需使用:

label.setText(...); 

改变标签的文本。

此外,你不应该使用空布局。 Swing旨在与布局经理一起使用。阅读Swing教程Layout Managers中的部分以获取更多信息和工作示例。

+0

谢谢,它工作。我不知道我是如何犯这样一个错误的。 – Bogdan