介绍
本文将介绍一个Java程序,该程序可以通过滚动小时和月份来显示时间。这个程序的实现需要先用Java的Calendar类调用它所提供的方法得到当前的小时数和月份,接着创建一个滚动条来控制这两个值,最后将它们呈现在程序的GUI界面上。
Calendar类
Java的Calendar类提供了许多方法来处理日期和时间。我们可以使用Calendar.getInstance()方法来获取一个Calendar对象,然后使用它的get()方法来获取特定的日期和时间字段的值。如下所示:
import java.util.Calendar;
public class DisplayTime {
public static void main(String[] args) {
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int month = now.get(Calendar.MONTH) + 1;
// ...
}
}
在这个示例程序中,我们使用了Calendar.getInstance()方法获取系统当前时间的Calendar对象,然后分别获取了当前的小时数和月份。需要注意的是,在获取月份时,需要加上1才是实际的月份数,因为Calendar中月份的值是从0开始的。
滚动条
Java中提供了一个调用javax.swing.JScrollBar类来创建滚动条的方式。下面是一个示例程序,它创建了一个垂直滚动条:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
public class ScrollBarDemo {
public static void main(String[] args) {
JFrame frame = new JFrame("ScrollBar Demo");
JPanel panel = new JPanel();
JScrollBar scrollBar = new JScrollBar(JScrollBar.VERTICAL, 0, 1, 0, 24);
panel.add(scrollBar);
frame.add(panel);
frame.setSize(300, 200);
frame.setVisible(true);
}
}
在这个程序中,我们创建了一个JFrame对象和一个JPanel对象,并将滚动条添加到了面板中。需要注意的是,在使用JScrollBar类创建滚动条时,需要指定它的方向、初始位置、大小和范围等参数。
将程序的GUI界面完整地实现
主程序
下面是将程序的GUI界面完整地实现的示例代码:
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.util.Calendar;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class DisplayTime extends JFrame implements ChangeListener {
private static final long serialVersionUID = 1L;
private JPanel panel;
private JLabel label;
public DisplayTime() {
setTitle("显示时间");
panel = new JPanel(new FlowLayout());
JScrollBar hourScrollBar = new JScrollBar(JScrollBar.HORIZONTAL, 0, 1, 0, 24);
hourScrollBar.setPreferredSize(new Dimension(180, 20));
hourScrollBar.addChangeListener(this);
panel.add(new JLabel("Hour"));
panel.add(hourScrollBar);
JScrollBar monthScrollBar = new JScrollBar(JScrollBar.HORIZONTAL, 1, 1, 1, 12);
monthScrollBar.setPreferredSize(new Dimension(180, 20));
monthScrollBar.addChangeListener(this);
panel.add(new JLabel("Month"));
panel.add(monthScrollBar);
label = new JLabel("", JLabel.CENTER);
label.setPreferredSize(new Dimension(200, 80));
label.setFont(new Font("Serif", Font.BOLD, 36));
panel.add(label);
add(panel);
setSize(400, 200);
setVisible(true);
}
public void stateChanged(ChangeEvent e) {
Calendar now = Calendar.getInstance();
int hour = now.get(Calendar.HOUR_OF_DAY);
int month = now.get(Calendar.MONTH) + 1;
JScrollBar scroller = (JScrollBar)e.getSource();
if (scroller.getValueIsAdjusting()) {
return;
}
if (scroller.getOrientation() == JScrollBar.HORIZONTAL) {
if (scroller.getName().equals("hour")) {
hour = scroller.getValue();
} else {
month = scroller.getValue();
}
}
label.setText(hour + " : " + month);
}
public static void main(String[] args) {
new DisplayTime();
}
}
在这个程序中,我们继承了JFrame类,并实现了ChangeListener接口,用于监听滚动条的事件。在程序的构造函数中,我们创建了两个水平滚动条,一个用于控制小时数,一个用于控制月份。同时,还创建了一个中心标签,用于显示当前的时间。
程序的界面截图
当我们运行这个程序时,会弹出一个包含有两个滚动条和一个标签的GUI界面。如下所示:
图1:程序的GUI界面截图
总结
本文介绍了一个Java程序,该程序可以通过滚动小时和月份来显示时间。我们首先用Java的Calendar类调用它所提供的方法来获取当前的小时数和月份,然后创建了一个滚动条来控制这两个值,最后将它们呈现在程序的GUI界面上。
在本文中,我们还介绍了如何使用JScrollBar类来创建滚动条并监听它们的事件,以及如何在GUI界面中添加标签和面板等组件。这些技术可以帮助我们更好地理解Java编程的GUI界面设计。