gpt4 book ai didi

java - Jlabel 时钟 java swing

转载 作者:行者123 更新时间:2023-12-02 03:15:12 25 4
gpt4 key购买 nike

我正在制作一个程序,显示所选国家/地区的时钟和时区。单击该按钮时,时间将显示在 jLabel 中。问题是,当我单击一次时,时间显示在标签中,但是当我单击第二次时,时间将被重写为现有的 jlabel 日期(文本)。

如何显示日期而不被重写。如果点击次数过多,时间将无法读取。

这是我的代码:

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);

}
}
}

有人可以帮助我吗?

最佳答案

If click more times, the time won't be readable

问题是您不断创建新的 JLabel 并将它们添加到框架中,以便每个标签的文本都绘制在另一个标签之上。不要每次单击按钮时都创建一个新的 JLabel。

而是在创建框架时创建标签并将其添加到框架中。

然后你只需使用:

label.setText(...);

更改标签的文本。

此外,您不应该使用空布局。 Swing 被设计为与布局管理器一起使用。阅读 Swing 教程中关于 Layout Managers 的部分了解更多信息和工作示例。

关于java - Jlabel 时钟 java swing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40431312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com