小日历JAVA课程设计实验报告docWord文档下载推荐.docx
- 文档编号:17920930
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:13
- 大小:35.74KB
小日历JAVA课程设计实验报告docWord文档下载推荐.docx
《小日历JAVA课程设计实验报告docWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《小日历JAVA课程设计实验报告docWord文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。
(1)xiaoril.java文件代码:
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjavax.swing.table.*;
publicclassXiaoriliextendsJApplet{
//==================================================
/*定义全局变量*/
publicstaticfinalColorbackground=Color.white;
//背景色
publicstaticfinalColorforeground=Color.black;
//前景色
publicstaticfinalColorheaderBackground=Color.DARK_GRAY;
//星期
publicstaticfinalColorheaderForeground=Color.white;
//星期前景色
publicstaticfinalColorselectedBackground=Color.green;
//选中背景色
publicstaticfinalColorselectedForeground=Color.white;
//选中前景色
publicstaticfinalStringWeekSun="
星期日"
;
//星期标签名称
publicstaticfinalStringWeekMon="
星期一"
publicstaticfinalStringWeekTue="
星期二"
publicstaticfinalStringWeekWed="
星期三"
publicstaticfinalStringWeekThu="
星期四"
publicstaticfinalStringWeekFri="
星期五"
publicstaticfinalStringWeekSat="
星期六"
privateJPanelMainPanel;
//日历面板
privateJLabelyearsLabel;
//“年份”标签
privateJSpinneryearsSpinner;
//年份组合框
privateJLabelmonthsLabel;
//“月份”标签
privateJComboBoxmonthsComboBox;
//12月份下拉框
privateJLabeltextLabel;
//标题显示标签
privateJLabelInfoLabel;
//个人信息显示标签
privateJTabledaysTable;
//日表格
privateAbstractTableModeldaysModel;
//天单元表格
privateCalendarcalendar;
//日历对象
//==================================================
/*函数定义*/
publicXiaorili(){//构造函数
MainPanel=(JPanel)getContentPane();
}
publicvoidinit(){//初始化面板界面函数
MainPanel.setLayout(newBorderLayout());
calendar=Calendar.getInstance();
//默认方式,以本地的时区和地区来构造Calendar
//--------------------------------------
yearsLabel=newJLabel("
年份:
"
);
//设置年份标签显示
yearsSpinner=newJSpinner();
//构造年份spinner组合框
yearsSpinner.setEditor(newJSpinner.NumberEditor(yearsSpinner,"
0000"
));
yearsSpinner.setValue(newInteger(calendar.get(Calendar.YEAR)));
yearsSpinner.addChangeListener(newChangeListener(){//注册该组合框的事件监听器
publicvoidstateChanged(ChangeEventchangeEvent){
intday=calendar.get(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,1);
calendar.set(Calendar.YEAR,((Integer)yearsSpinner.getValue()).intValue());
intmaxDay=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
calendar.set(Calendar.DAY_OF_MONTH,day>
maxDay?
maxDay:
day);
updateView();
//更新显示
});
//--------------------------------------
JPanelyearMonthPanel=newJPanel();
//定义年月面板
MainPanel.add(yearMonthPanel,BorderLayout.NORTH);
//添加年月面板到日历面板的南面(最上方)
yearMonthPanel.setLayout(newBorderLayout());
//边布局模式
JPanelyearPanel=newJPanel();
//构建年份面板
yearMonthPanel.add(yearPanel,BorderLayout.WEST);
//年份面板添加到年月面板西部(左边)
yearPanel.setLayout(newBorderLayout());
//设置年份面板为边布局并添加年份标签和组合框
yearPanel.add(yearsLabel,BorderLayout.WEST);
yearPanel.add(yearsSpinner,BorderLayout.CENTER);
monthsLabel=newJLabel("
月份:
//设置月份标签显示
monthsComboBox=newJComboBox();
//月份下拉框
for(inti=1;
i<
=12;
i++){//构造下拉框的12个月份
monthsComboBox.addItem(newInteger(i));
}
monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));
//下拉框当前月份为选中状态
monthsComboBox.addActionListener(newActionListener(){//注册月份下拉框的事件监听器
publicvoidactionPerformed(ActionEventactionEvent){
calendar.set(Calendar.MONTH,monthsComboBox.getSelectedIndex());
//更新面板显示
//--------------------------------------
JPanelmonthPanel=newJPanel();
//定义月份面板
yearMonthPanel.add(monthPanel,BorderLayout.EAST);
//添加月份面板到年月面板的东面(右面)
monthPanel.setLayout(newBorderLayout());
//月份面板设为边布局方式
monthPanel.add(monthsLabel,BorderLayout.WEST);
//添加月份名称标签到月份面板西面(左面)
monthPanel.add(monthsComboBox,BorderLayout.CENTER);
//添加月份下拉框到月份面板中间
textLabel=newJLabel("
JAVA小日历-061114052"
//设置标题标签显示
JPaneltxetPanel=newJPanel();
//定义标题文本显示面板
yearMonthPanel.add(txetPanel,BorderLayout.CENTER);
//添加标题文本显示面板到年月面板中间
txetPanel.add(textLabel,BorderLayout.CENTER);
//添加标题文本标签到面板
InfoLabel=newJLabel("
学号:
24072400287姓名:
谢水全班级:
07计算机班"
//设置个人信息标签显示
JPanelInfoPanel=newJPanel();
//定义底部个人信息显示面板
MainPanel.add(InfoPanel,BorderLayout.SOUTH);
//添加个人信息显示面板到日历面板南方(下方)
InfoPanel.add(InfoLabel);
//添加信息标签文本标签到面板
JPanelLink=newJPanel();
//设置超级链接到我的博客
InfoPanel.add(newLinkLabel("
访问谢水全工作室"
"
"
daysModel=newAbstractTableModel(){//设置7行7列
publicintgetRowCount(){
return7;
publicintgetColumnCount(){
publicObjectgetValueAt(introw,intcolumn){
if(row==0){//第一行显示星期
returngetHeader(column);
row--;
Calendarcalendar=(Calendar)Xiaorili.this.calendar.clone();
intdayCount=calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
intmoreDayCount=calendar.get(Calendar.DAY_OF_WEEK)-1;
intindex=row*7+column;
intdayIndex=index-moreDayCount+1;
if(index<
moreDayCount||dayIndex>
dayCount){
returnnull;
}else{
returnnewInteger(dayIndex);
};
daysTable=newCalendarTable(daysModel,calendar);
//构造日表格
daysTable.setCellSelectionEnabled(true);
//设置表格单元格可选择
daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
daysTable.setDefaultRenderer(daysTable.getColumnClass(0),newTableCellRenderer(){
publicComponentgetTableCellRendererComponent(JTabletable,Objectvalue,booleanisSelected,
booleanhasFocus,introw,intcolumn){
Stringtext=(value==null)?
:
value.toString();
JLabelcell=newJLabel(text);
cell.setOpaque(true);
//绘制边界内的所有像素
if(row==0){//第一行显示星期,设置为星期的前景色和背景色
cell.setForeground(headerForeground);
cell.setBackground(headerBackground);
}else{
if(isSelected){//日期单元格如果选中,则设置为日期选中的前、背景色
cell.setForeground(selectedForeground);
cell.setBackground(selectedBackground);
}else{//设置日期单元格的普通前、背景色
cell.setForeground(foreground);
cell.setBackground(background);
returncell;
MainPanel.add(daysTable,BorderLayout.CENTER);
//添加日面板到日历面板中间
publicstaticStringgetHeader(intindex){//设置第一行星期的显示
switch(index){
case0:
returnWeekSun;
case1:
returnWeekMon;
case2:
returnWeekTue;
case3:
returnWeekWed;
case4:
returnWeekThu;
case5:
returnWeekFri;
case6:
returnWeekSat;
default:
publicvoidupdateView(){//更新面板显示方法
daysModel.fireTableDataChanged();
daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH),
calendar.get(Calendar.WEEK_OF_MONTH));
daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK)-1,
calendar.get(Calendar.DAY_OF_WEEK)-1);
publicstaticclassCalendarTableextendsJTable{//表格类
publicCalendarTable(TableModelmodel,Calendarcalendar){//构造方法
super(model);
this.calendar=calendar;
publicvoidchangeSelection(introw,intcolumn,booleantoggle,booleanextend){//选择表格单元格时
super.changeSelection(row,column,toggle,extend);
if(row==0){//选择为第一行(星期)时不改变单元格
return;
Objectobj=getValueAt(row,column);
if(obj!
=null){
calendar.set(Calendar.DAY_OF_MONTH,((Integer)obj).intValue());
}
(2)LinkLabel.java文件代码:
publicclassLinkLabelextendsJLabel{
privateStringtext,url;
privatebooleanisSupported;
publicLinkLabel(Stringtext,Stringurl){
this.text=text;
//显示文本
this.url=url;
//链接地址
try{
this.isSupported=Desktop.isDesktopSupported()&
&
Desktop.getDesktop().isSupported(Desktop.Action.BROWSE);
}
catch(Exceptione){//捕获浏览器异常
this.isSupported=false;
}
setText(false);
addMouseListener(newMouseAdapter(){//注册鼠标单击事件监听器
publicvoidmouseEntered(MouseEvente){
setText(isSupported);
if(isSupported)
setCursor(newCursor(Cursor.HAND_CURSOR));
//鼠标形状为hand形式
}
publicvoidmouseExited(MouseEvente){//移开鼠标时
setText(false);
publicvoidmouseClicked(MouseEvente){//鼠标单击时
try{
Desktop.getDesktop().browse(new.URI(LinkLabel.this.url));
//调用默认浏览器打开链接
}
catch(Exceptionex){
});
privatevoidsetText(booleanb){//设置标签显示文本
if(!
b)
setText("
<
html>
fontcolor=red>
u>
+text);
//鼠标移到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 日历 JAVA 课程设计 实验 报告 doc