那位高人能帮我解释下这段java日历代码。谢谢 了

DateFrame.javaimportjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.... DateFrame.java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar;
class DateFrame extends JFrame implements Runnable{
Calendar date=Calendar.getInstance();
String[] str={"1","2","3","4","5","6","7","8","9","10","11","12"};
JLabel lblYear=new JLabel("年 ");
JLabel lblMonth=new JLabel("月 ");
JLabel lblDate=new JLabel("现在的时间是:");
JLabel lblShowDate=new JLabel();
// javax.swing.JTextField trxt =new JTextField(10);
// trxt.setHorizontalAlignment(JTextField.RIGHT); //设置文本从右边输入
JComboBox cboMonth=new JComboBox(str);
JComboBox cboYear=new JComboBox();
JTextArea txaShow=new JTextArea();
JPanel pnlNorth=new JPanel();
JPanel pnlSOUTH=new JPanel();
JButton btnShow=new JButton("显示");
JButton btnClose=new JButton("关闭");
JScrollPane jsp=new JScrollPane(txaShow);
Container c=this.getContentPane();
public DateFrame(){
Thread thread=new Thread(this);
thread.start();
this.setTitle("玩玩日历拉!!!");
this.setSize(300,260);
for (int i = 1990; i<=2025; i++) {
cboYear.addItem(""+i);
}
cboYear.setSelectedItem(""+(date.get(Calendar.YEAR)));
cboMonth.setSelectedItem(""+(date.get(Calendar.MONTH)+1));
pnlNorth.add(cboYear);
txaShow.setTabSize(4); //设置tab键的距离
txaShow.setForeground(Color.GREEN);
pnlNorth.add(lblYear);
pnlNorth.add(cboMonth);
pnlNorth.add(lblMonth);
pnlNorth.add(lblDate);
pnlNorth.add(lblShowDate);
c.add(pnlNorth,BorderLayout.NORTH);
c.add(jsp);
pnlSOUTH.add(btnShow);
pnlSOUTH.add(btnClose);
c.add(pnlSOUTH,BorderLayout.SOUTH);
btnShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int year=Integer.parseInt((String)cboYear.getSelectedItem());
int month=Integer.parseInt((String)cboMonth.getSelectedItem());
try {
DateInfo date=new DateInfo(year,month);
txaShow.setText(""+date);
}
catch (DateException ex) {
ex.printStackTrace();
}

}
});
btnClose.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
public void run(){
try {
while(true){
Thread.sleep(1000);
int hour=date.get(Calendar.HOUR);
int minute=date.get(Calendar.MINUTE);
int second=date.get(Calendar.SECOND);
String str=hour+":"+minute+":"+second;
lblShowDate.setText(str);

//this.repaint();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}

}
展开
 我来答
vacja
2011-11-07
知道答主
回答量:2
采纳率:0%
帮助的人:3万
展开全部
//全部都在注释里了,自己看吧,可以直接编译运行了

/**
* 导入所需要的jar包
* **/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.Calendar;

/**
* 定义一个显示时间的类,继承自JFrame类,实现Runnalbe接口
* 继承自JFrame类,为了显示窗体
* 实现Runnalbe接口为了实现多线程
* **/
class DateFrame extends JFrame implements Runnable{
//获取系统当前日期时间
Calendar date=Calendar.getInstance();
//定义一个字符串数组,用作“月份”下拉列表的选项
String[] str={"1","2","3","4","5","6","7","8","9","10","11","12"};

//定义要在JFrame窗体上显示的元素
//定义一个标签,标签用于显示文字
JLabel lblYear=new JLabel("年 ");
JLabel lblMonth=new JLabel("月 ");
JLabel lblDate=new JLabel("现在的时间是:");
JLabel lblShowDate=new JLabel();
// javax.swing.JTextField trxt =new JTextField(10);
// trxt.setHorizontalAlignment(JTextField.RIGHT); //设置文本从右边输入

//以上面定义的字符串数组作为选项,创建“月份”下拉列表菜单
JComboBox cboMonth=new JComboBox(str);
//年份下拉列表
JComboBox cboYear=new JComboBox();
JTextArea txaShow=new JTextArea();
JPanel pnlNorth=new JPanel();
JPanel pnlSOUTH=new JPanel();

//两个按钮
JButton btnShow=new JButton("显示");
JButton btnClose=new JButton("关闭");
JScrollPane jsp=new JScrollPane(txaShow);
Container c=this.getContentPane();

//这个是构造方法,当我们执行 new DateFrame()时,系统就调用这个方法
public DateFrame(){
//创建一个线程,并开始它,this关键字是指本类的实例,因为本类(DataFrame)实现了Runnable接口,所以可以传入
//Thread类有一个构造方法是 :public Thread(Runnable runnable)
Thread thread=new Thread(this);
//开始线程后,系统将同时运行下面的run()方法,本类的实例将有两个线程在运行:主线程和刚创建的thread这个线程
thread.start();

//设置一下窗体的标题
this.setTitle("玩玩日历拉!!!");
//设置一下窗体的大小,单位是像素
this.setSize(300,260);

//给“年份”下拉菜单添加选项,从1990年添加到2025年
for (int i = 1990; i<=2025; i++) {
cboYear.addItem(""+i);
}

//将年份下拉菜单的默认选项设置为当前系统时间的年份
cboYear.setSelectedItem(""+(date.get(Calendar.YEAR)));
//将月份下拉菜单的默认选项设置为当前系统时间的月份
//date.get(Calendar.MONTH)+1)是因为,在这里的月份取值是从0开始到11的,0表示1月,1表示2月,以此类推
cboMonth.setSelectedItem(""+(date.get(Calendar.MONTH)+1));
pnlNorth.add(cboYear);

txaShow.setTabSize(4); //设置tab键的距离
//设置文本域的字体颜色为绿色
txaShow.setForeground(Color.GREEN);
pnlNorth.add(lblYear);
pnlNorth.add(cboMonth);
pnlNorth.add(lblMonth);
pnlNorth.add(lblDate);
pnlNorth.add(lblShowDate);
//这个窗体的内容分布采用了边框布局(BorderLayout)
//在主面板的北侧(上方)显示时间条,也就是年月下拉菜单和时间
c.add(pnlNorth,BorderLayout.NORTH);
//将文本框(jsp)放在主面板的中间,默认布局是在中间
//等同于c.add(jsp,BorderLayout.CENTER);
c.add(jsp);
//将南侧(下方)放上按钮
pnlSOUTH.add(btnShow);
pnlSOUTH.add(btnClose);
c.add(pnlSOUTH,BorderLayout.SOUTH);

//为“显示”按钮添加监听事件,当“显示”按钮被点击时就执行这里的部分
btnShow.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
int year=Integer.parseInt((String)cboYear.getSelectedItem());
int month=Integer.parseInt((String)cboMonth.getSelectedItem());
try {
//下面这句让我注释掉了,因为找不到DataInfo类,这个方法很简单,就是将当前选中的年份和月份显示到文本框里
//DateInfo date=new DateInfo(year,month);
txaShow.setText(""+date);
}
catch (Exception ex) {
ex.printStackTrace();
}

}
});
//为“关闭”按钮添加监听事件,当“关闭”按钮被点击时就执行这里的部分
btnClose.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
}
//线程开始后,新的线程就运行这里的部分
public void run(){
try {
//每一秒钟更新一下显示的时间
while(true){
Thread.sleep(1000);
int hour=date.get(Calendar.HOUR);
int minute=date.get(Calendar.MINUTE);
int second=date.get(Calendar.SECOND);
String str=hour+":"+minute+":"+second;
lblShowDate.setText(str);

//this.repaint();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
}
/**
* 这个方法是我添加的,为了让这个程序能够运行起来
* main方法是java类的执行入口
* **/
public static void main(String[] args) {
DateFrame frame = new DateFrame();
frame.setVisible(true);
}

}
匿名用户
2011-11-05
展开全部
那个面板 不解释了 那也没什么可解释的了 就是启用线程 调入用run方法 一秒钟更新一次时间信息 放到面板上 for (int i = 1990; i<=2025; i++) {
cboYear.addItem(""+i);
}循环添加列表
DateInfo 这个类是自己定义的把! ? 我没听过这个类 也没在你发的代码上看到 估计是 改变面板中选项的 日期的把???在一个事件里面 !
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一大波
2011-11-06
知道答主
回答量:3
采纳率:0%
帮助的人:4879
展开全部
哇哇···哇哇····看不懂咧,偶JAVA学的一般般····
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
浩q浩
2011-11-05
知道答主
回答量:8
采纳率:0%
帮助的人:4万
展开全部
这个是代码 你可以用代码转换器转换一下
追问
我要得到注释啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式