【发布时间】:2016-04-13 12:48:26
【问题描述】:
我正在尝试创建一个应用程序,当按下按钮时,它将在 LocalDateTime 对象中增加月份。
LocalDateTime 对象和显示月份名称的 JLabel 存储在扩展 JFrame 的 Main 类中。
具有 ActionListener 的 JButton 在按下时将 LocalDateTime 对象的月份加 1,存储在一个名为 Panel1 的单独类中,该类扩展了 JPanel。
Panel1 类被添加到 JFrame。我应该怎么做才能使 JLabel 在按下按钮时反映对 LocalDateTime 对象所做的更改?
主类:
import javax.swing.*;
import java.awt.*;
import java.time.LocalDateTime;
public class Main extends JFrame {
private LocalDateTime currentTime = LocalDateTime.now();
private JLabel monthLabel;
public Main() {
super();
setLayout(new BorderLayout());
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
monthLabel = new JLabel(currentTime.getMonth().name());
add(monthLabel, BorderLayout.NORTH);
add(new Panel1(currentTime), BorderLayout.SOUTH);
pack();
setVisible(true);
}
public static void main(String args[]) {
Main main = new Main();
}
}
面板 1 类:
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDateTime;
public class Panel1 extends JPanel implements ActionListener {
private LocalDateTime time;
private JButton incrementMonth;
public Panel1(LocalDateTime time) {
this.time = time;
incrementMonth = new JButton(">");
incrementMonth.addActionListener(this);
add(incrementMonth);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == incrementMonth) {
time = time.plusMonths(1);
}
}
}
【问题讨论】:
标签: java swing datetime jpanel actionlistener