как переключать текст в jpanel - PullRequest
0 голосов
/ 06 марта 2019

В моей 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);
    }

}
...