В моей JPanel у меня есть два JLabel.Верхняя метка показывает время, а нижняя метка показывает дату.
Я пытаюсь реализовать JToggleButton, который переключает время с 12-часового формата на 24-часовой формат, и наоборот.Проблема в том, что кнопка переключения не меняет время.Что я должен сделать, чтобы решить проблему?Очень ценится!
Полный код:
package clock;
import java.awt.*;
import java.awt.event.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
public class ClockPanel extends JPanel {
private Date getTime, getDate;
private JToggleButton hourTypeButton;
private JLabel timeLabel, dateLabel;
private SimpleDateFormat timeFormat, dateFormat;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("Clock");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setSize(640, 360);
ClockPanel clockPanel = new ClockPanel();
frame.add(clockPanel);
frame.setVisible(true);
}
});
}
public ClockPanel() {
timeFormat = new SimpleDateFormat("hh:mm a");
dateFormat = new SimpleDateFormat("EEEE, MMMM dd, yyyy");
hourTypeButton = new JToggleButton("12-Hour");
hourTypeButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
timeFormat = new SimpleDateFormat((hourTypeButton.isSelected() ? "kk" : "hh") + ":mm a");
hourTypeButton.setText((hourTypeButton.isSelected() ? "24" : "12") + "-hour");
}
});
add(hourTypeButton);
getTime = new Date();
timeLabel = new JLabel(timeFormat.format(getTime));
timeLabel.setFont(new Font("Segoe UI", Font.PLAIN, 140));
add(timeLabel);
getDate = new Date();
dateLabel = new JLabel(dateFormat.format(getDate));
dateLabel.setFont(new Font("Segoe UI", Font.PLAIN, 50));
dateLabel.setForeground(Color.GRAY);
add(dateLabel);
}
}