2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p><b>  軟 件 學(xué) 院</b></p><p><b>  課程設(shè)計(jì)報(bào)告書(shū)</b></p><p>  課程名稱 </p><p>  設(shè)計(jì)題目 </p

2、><p>  專業(yè)班級(jí) </p><p>  學(xué) 號(hào) </p><p>  姓 名 </p><p>  指導(dǎo)教師

3、 </p><p><b>  年 月</b></p><p><b>  目錄</b></p><p>  JAVA日歷設(shè)計(jì)2</p><p><b>  1.設(shè)計(jì)目標(biāo)2</b></p>

4、<p><b>  2.設(shè)計(jì)要求2</b></p><p><b>  3.制作要點(diǎn):2</b></p><p><b>  4.設(shè)計(jì)思想2</b></p><p>  5.設(shè)計(jì)類及對(duì)象設(shè)計(jì)3</p><p><b>  6.代碼分析3</

5、b></p><p><b>  6.程序源代碼9</b></p><p><b>  7.調(diào)試記錄14</b></p><p><b>  8.總結(jié)15</b></p><p><b>  9.參考文獻(xiàn)16</b></p>&

6、lt;p><b>  JAVA日歷設(shè)計(jì)</b></p><p><b>  1.設(shè)計(jì)目標(biāo)</b></p><p>  本課程設(shè)計(jì)實(shí)現(xiàn)一個(gè)日歷的功能,可顯示當(dāng)前的年,月,日和星期.也可以查詢,選擇年,月后,顯示當(dāng)時(shí)的日歷.</p><p><b>  2.設(shè)計(jì)要求 </b></p>

7、<p>  (1)界面是日歷。該日歷可以按年前后翻動(dòng),當(dāng)鼠標(biāo)單擊“上一年”按鈕時(shí),當(dāng)前日歷的年份將減一;當(dāng)鼠標(biāo)左鍵單擊“下年”按鈕,當(dāng)前日歷的年份將加一。 (2)也可以在某年內(nèi)按月前后翻動(dòng)。當(dāng)鼠標(biāo)左鍵單擊“上月”按鈕時(shí),當(dāng)前日歷的月份將減一;當(dāng)鼠標(biāo)左鍵單擊“下月” 當(dāng)前日歷表的月份將加一。 (3)使用鼠標(biāo)左鍵在要選擇的日期上單擊,變顏色.</p><p><b>  3.制作要點(diǎn):

8、</b></p><p>  (1).AWT與Swing的使用.</p><p>  (2)應(yīng)用JApplet生成界面.</p><p><b>  4.設(shè)計(jì)思想</b></p><p> ?。?)本小日歷設(shè)計(jì)主體結(jié)構(gòu)為:設(shè)計(jì)一個(gè)框架MainFrame,然后在MainFrame里添加一個(gè)MainPanel面板

9、。定義一個(gè)MainPanel面板類,該面板以邊布局格式,所有其他面板、標(biāo)簽等均添加到該面板中。</p><p> ?。?)MainPanel面板北部(上方),添加一個(gè)年月面板YearMonthPanel。該年月面板主要放年份顯示、月份顯示、標(biāo)題顯示。YearMonthPanel面板也使用邊布局格式,西部添加一個(gè)年份面板,放年份信息;中部添加一個(gè)TextPanel面板,放標(biāo)題文本顯示信息;東部添加一個(gè)月份面板Mon

10、thPanel,放月份下拉框信息。</p><p> ?。?)MainPanel主面板的中部,添加一個(gè)DaysPanel面板用于放置月份的天數(shù)表格信息。</p><p> ?。?)MainPanel主面板的南部(下方),添加一個(gè)InfoPanel面板,主要用于放置顯示個(gè)人信息。</p><p> ?。?)InfoPanel面板上設(shè)計(jì)添加一個(gè)超級(jí)鏈接標(biāo)簽,鏈接到個(gè)人博

11、客。</p><p>  5.設(shè)計(jì)類及對(duì)象設(shè)計(jì)</p><p>  在本程序中:定義了一個(gè)Frame類,主要定義一個(gè)窗體框架,用于顯示日歷信息,并在主函數(shù)中只創(chuàng)建一個(gè)該窗體對(duì)象實(shí)現(xiàn)程序功能。</p><p>  定義了一個(gè)主日歷面板類MyCalendar,其中包含了日歷設(shè)計(jì)所用到的全局變量、功能函數(shù)等,在Frame類里定義了其對(duì)象。在該日歷面板類里又設(shè)計(jì)了一個(gè)內(nèi)部類

12、CalendarTable表格類,用于布局日歷天的顯示格式。</p><p>  為了設(shè)計(jì)一個(gè)超級(jí)鏈接,定義了一個(gè)LinkLable類,單獨(dú)保存在一個(gè)文件LinkTbale.java中,在日歷面板類MyCalendar里定義了其對(duì)象。</p><p><b>  6.代碼分析</b></p><p>  定義星期天到星期六全局變量</p&

13、gt;<p>  public static final String WEEK_SUN = "星期日"; //星期標(biāo)簽名稱</p><p>  public static final String WEEK_MON = "星期一";</p><p>  public static final String WEEK_TUE

14、 = "星期二";</p><p>  public static final String WEEK_WED = "星期三";</p><p>  public static final String WEEK_THU = "星期四";</p><p>  public static final Stri

15、ng WEEK_FRI = "星期五";</p><p>  public static final String WEEK_SAT = "星期六";</p><p>  public static final Color background = Color.white; //設(shè)置背景顏色</p><p>

16、  public static final Color foreground = Color.black; //設(shè)置前景顏色</p><p>  public static final Color headerBackground = Color.blue; //設(shè)置題頭星期的背景顏色</p><p>  public static final Color hea

17、derForeground = Color.white; //設(shè)置題頭星期的前景顏色</p><p>  public static final Color selectedBackground = Color.green; //設(shè)置被選中的日期的背景顏色</p><p>  public static final Color selectedForeground = Color

18、.white; //設(shè)置被選中的日期的前景顏色</p><p>  private JPanel cPane; //日歷面板</p><p>  private JLabel yearsLabel; //"年份"標(biāo)簽</p><p>  private JSpinner yearsSpinner; //年調(diào)控,年

19、份組合框</p><p>  private JLabel monthsLabel; //"月份"標(biāo)簽</p><p>  private JComboBox monthsComboBox;//12月下拉框</p><p>  private JTable daysTable; //用來(lái)顯示日期的table,日表格</

20、p><p>  private AbstractTableModel daysModel;//天單元表格</p><p>  private Calendar calendar; //日歷對(duì)象</p><p><b>  函數(shù)定義</b></p><p>  public MyCalendar() { //構(gòu)

21、造函數(shù)</p><p>  cPane = (JPanel) getContentPane();</p><p><b>  }</b></p><p>  public void init() { //初始化,對(duì)所有的空間進(jìn)行布局,面板界面函數(shù)</p><p>  cPane.setLayout(new Border

22、Layout());</p><p>  //使用border布局管理器</p><p>  calendar = Calendar.getInstance();//默認(rèn)方式,以本地的時(shí)區(qū)和地區(qū)來(lái)構(gòu)造Calendar</p><p>  yearsLabel = new JLabel("年份: ");//設(shè)置年份標(biāo)簽顯示</p>&

23、lt;p>  yearsSpinner = new JSpinner();//構(gòu)造年份spinner組合框</p><p>  yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000"));</p><p>  yearsSpinner.setValue(new Integer(ca

24、lendar.get(Calendar.YEAR)));</p><p>  //增加監(jiān)聽(tīng) 監(jiān)聽(tīng)年份的改變</p><p>  yearsSpinner.addChangeListener(new ChangeListener() {//注冊(cè)該組合框的事件監(jiān)聽(tīng)器</p><p>  public void stateChanged(ChangeEvent chang

25、eEvent) {</p><p>  int day = calendar.get(Calendar.DAY_OF_MONTH);</p><p>  calendar.set(Calendar.DAY_OF_MONTH, 1);</p><p>  calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getVa

26、lue()).intValue());</p><p>  int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);</p><p>  calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);</p><p>  up

27、dateView();//更新顯示</p><p><b>  }</b></p><p><b>  });</b></p><p>  JPanel yearMonthPanel = new JPanel();//定義年月面板</p><p>  cPane.add(yearMonthPanel

28、, BorderLayout.NORTH);//添加年月面板到日歷面板的南面(最上方)</p><p>  yearMonthPanel.setLayout(new BorderLayout());//邊布局模式</p><p>  yearMonthPanel.add(new JPanel(), BorderLayout.CENTER);</p><p>  JP

29、anel yearPanel = new JPanel();//構(gòu)建年份面板</p><p>  yearMonthPanel.add(yearPanel, BorderLayout.WEST);//年份面板添加到年月面板西部(左邊)</p><p>  yearPanel.setLayout(new BorderLayout());//設(shè)置年份面板為邊布局并添加年份標(biāo)簽和組合框</

30、p><p>  yearPanel.add(yearsLabel, BorderLayout.WEST);</p><p>  yearPanel.add(yearsSpinner, BorderLayout.CENTER);</p><p>  monthsLabel = new JLabel("月份: "); //設(shè)置月份標(biāo)簽顯示</p&g

31、t;<p>  monthsComboBox = new JComboBox(); //向月份下拉框中增加內(nèi)容</p><p>  for (int i = 1; i <= 12; i++) { //構(gòu)造下拉框的12個(gè)月份</p><p>  monthsComboBox.addItem(new Integer(i));</p><p><

32、;b>  }</b></p><p>  monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));//下拉框當(dāng)前月份為選中狀態(tài)</p><p>  monthsComboBox.addActionListener(new ActionListener() { //注冊(cè)月份下拉框的事件監(jiān)聽(tīng)器</p&g

33、t;<p>  public void actionPerformed(ActionEvent actionEvent) {</p><p>  int day = calendar.get(Calendar.DAY_OF_MONTH);</p><p>  calendar.set(Calendar.DAY_OF_MONTH, 1);</p><p>

34、;  calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex());</p><p>  int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);</p><p>  calendar.set(Calendar.DAY_OF_MONTH, day >

35、maxDay ? maxDay : day);</p><p>  updateView();//更新面板顯示</p><p><b>  }</b></p><p><b>  });</b></p><p>  JPanel monthPanel = new JPanel();//定義月份面板&

36、lt;/p><p>  yearMonthPanel.add(monthPanel, BorderLayout.EAST);//添加月份面板到年月面板的東面(右面)</p><p>  monthPanel.setLayout(new BorderLayout());//月份面板設(shè)為邊布局方式</p><p>  monthPanel.add(monthsLabel,

37、BorderLayout.WEST);//添加月份名稱標(biāo)簽到月份面板西面(左面)</p><p>  monthPanel.add(monthsComboBox, BorderLayout.CENTER);//添加月份下拉框到月份面板中間</p><p>  daysModel = new AbstractTableModel() { //設(shè)置7行7列</p><p

38、>  public int getRowCount() { //設(shè)置7行</p><p><b>  return 7;</b></p><p><b>  }</b></p><p>  public int getColumnCount() { //設(shè)置列7</p><p

39、><b>  return 7;</b></p><p><b>  }</b></p><p>  public Object getValueAt(int row, int column) {</p><p>  if (row == 0) { //第一行顯示星期</p><p>  re

40、turn getHeader(column);</p><p><b>  }</b></p><p><b>  row--;</b></p><p>  Calendar calendar = (Calendar) MyCalendar.this.calendar.clone();</p><p&g

41、t;  calendar.set(Calendar.DAY_OF_MONTH, 1);</p><p>  int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);</p><p>  int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1;</p>

42、;<p>  int index = row * 7 + column;</p><p>  int dayIndex = index - moreDayCount + 1;</p><p>  if (index < moreDayCount || dayIndex > dayCount) {</p><p>  return null;

43、</p><p><b>  } else {</b></p><p>  return new Integer(dayIndex);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

44、};</b></p><p>  daysTable = new CalendarTable(daysModel, calendar);//構(gòu)造日表格</p><p>  //設(shè)置每個(gè)call可以被選中</p><p>  daysTable.setCellSelectionEnabled(true);//設(shè)置表格單元格可選擇</p>&l

45、t;p>  daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</p><p>  daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() {</p><p>  public Component g

46、etTableCellRendererComponent(JTable table, Object value, boolean isSelected,</p><p>  boolean hasFocus, int row, int column) {</p><p>  String text = (value == null) ? "" : value.toStr

47、ing();</p><p>  JLabel cell = new JLabel(text);</p><p>  cell.setOpaque(true);//繪制邊界內(nèi)的所有像素</p><p>  if (row == 0) {//第一行顯示星期,設(shè)置為星期的前景色和背景色</p><p>  cell.setForeground(h

48、eaderForeground);</p><p>  cell.setBackground(headerBackground);</p><p><b>  } else {</b></p><p>  if (isSelected) {//日期單元格如果選中,則設(shè)置為日期選中的前、背景色</p><p>  cell

49、.setForeground(selectedForeground);</p><p>  cell.setBackground(selectedBackground);</p><p>  } else { //設(shè)置日期單元格的普通前、背景色</p><p>  cell.setForeground(foreground);</p><p>

50、;  cell.setBackground(background);</p><p><b>  }</b></p><p><b>  }</b></p><p>  return cell;</p><p><b>  }</b></p><p>&

51、lt;b>  });</b></p><p>  updateView();</p><p>  cPane.add(daysTable, BorderLayout.CENTER);//添加日面板到日歷面板中間</p><p><b>  }</b></p><p>  public static St

52、ring getHeader(int index) {//設(shè)置第一行星期的顯示</p><p>  switch (index) {</p><p><b>  case 0:</b></p><p>  return WEEK_SUN;</p><p><b>  case 1:</b></

53、p><p>  return WEEK_MON;</p><p><b>  case 2:</b></p><p>  return WEEK_TUE;</p><p><b>  case 3:</b></p><p>  return WEEK_WED;</p>

54、<p><b>  case 4:</b></p><p>  return WEEK_THU;</p><p><b>  case 5:</b></p><p>  return WEEK_FRI;</p><p><b>  case 6:</b></

55、p><p>  return WEEK_SAT;</p><p><b>  default:</b></p><p>  return null;</p><p><b>  }</b></p><p><b>  }</b></p><

56、;p>  public void updateView() {//更新面板顯示方法</p><p>  daysModel.fireTableDataChanged();</p><p>  daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH),</p><p>  cal

57、endar.get(Calendar.WEEK_OF_MONTH));</p><p>  daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1,</p><p>  calendar.get(Calendar.DAY_OF_WEEK) - 1);</p><p>&l

58、t;b>  }</b></p><p>  設(shè)置日歷的table</p><p>  public static class CalendarTable extends JTable {//表格類</p><p>  private Calendar calendar;</p><p>  public CalendarTa

59、ble(TableModel model, Calendar calendar) {//構(gòu)造方法</p><p>  super(model);</p><p>  this.calendar = calendar;</p><p><b>  }</b></p><p>  public void changeSele

60、ction(int row, int column, boolean toggle, boolean extend) {//選擇表格單元格時(shí)</p><p>  super.changeSelection(row, column, toggle, extend);</p><p>  if (row == 0) {//選擇為第一行(星期)時(shí)不改變單元格</p><p&g

61、t;<b>  return;</b></p><p><b>  }</b></p><p>  Object obj = getValueAt(row, column);</p><p>  if (obj != null) {</p><p>  calendar.set(Calendar.D

62、AY_OF_MONTH, ((Integer)obj).intValue());</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  讓applet作為一個(gè)可執(zhí)行的程序來(lái)運(yùn)行</p&g

63、t;<p>  public static void main(String[] args) {</p><p>  JFrame frame = new JFrame("日歷");</p><p>  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  M

64、yCalendar myCalendar = new MyCalendar();</p><p>  myCalendar.init();</p><p>  frame.getContentPane().add(myCalendar);</p><p>  frame.setSize(400, 250);</p><p>  frame.s

65、how();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  6.程序源代碼</b></p><p>  import java.awt.*;</p><p>  import java.awt

66、.event.*;</p><p>  import java.util.*;</p><p>  import javax.swing.*;</p><p>  import javax.swing.event.*;</p><p>  import javax.swing.table.*;</p><p>  pu

67、blic class MyCalendar extends JApplet {</p><p>  //定義星期天到星期六全局變量</p><p>  public static final String WEEK_SUN = "星期日"; //星期標(biāo)簽名稱</p><p>  public static final String W

68、EEK_MON = "星期一";</p><p>  public static final String WEEK_TUE = "星期二";</p><p>  public static final String WEEK_WED = "星期三";</p><p>  public static fin

69、al String WEEK_THU = "星期四";</p><p>  public static final String WEEK_FRI = "星期五";</p><p>  public static final String WEEK_SAT = "星期六";</p><p>  public

70、 static final Color background = Color.white; //設(shè)置背景顏色</p><p>  public static final Color foreground = Color.black; //設(shè)置前景顏色</p><p>  public static final Color headerBackground

71、 = Color.blue; //設(shè)置題頭星期的背景顏色</p><p>  public static final Color headerForeground = Color.white; //設(shè)置題頭星期的前景顏色</p><p>  public static final Color selectedBackground = Color.green; //設(shè)置被選

72、中的日期的背景顏色</p><p>  public static final Color selectedForeground = Color.white; //設(shè)置被選中的日期的前景顏色</p><p>  private JPanel cPane; //日歷面板</p><p>  private JLabel yearsLabel;

73、 //"年份"標(biāo)簽</p><p>  private JSpinner yearsSpinner; //年調(diào)控,年份組合框</p><p>  private JLabel monthsLabel; //"月份"標(biāo)簽</p><p>  private JComboBox monthsComboBox;//1

74、2月下拉框</p><p>  private JTable daysTable; //用來(lái)顯示日期的table,日表格</p><p>  private AbstractTableModel daysModel;//天單元表格</p><p>  private Calendar calendar; //日歷對(duì)象</p>

75、<p><b>  //函數(shù)定義</b></p><p>  public MyCalendar() { //構(gòu)造函數(shù)</p><p>  cPane = (JPanel) getContentPane();</p><p><b>  }</b></p><p>  public v

76、oid init() { //初始化,對(duì)所有的空間進(jìn)行布局,面板界面函數(shù)</p><p>  cPane.setLayout(new BorderLayout());</p><p>  //使用border布局管理器</p><p>  calendar = Calendar.getInstance();//默認(rèn)方式,以本地的時(shí)區(qū)和地區(qū)來(lái)構(gòu)造Calendar&l

77、t;/p><p>  yearsLabel = new JLabel("年份: ");//設(shè)置年份標(biāo)簽顯示</p><p>  yearsSpinner = new JSpinner();//構(gòu)造年份spinner組合框</p><p>  yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsS

78、pinner, "0000"));</p><p>  yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR)));</p><p>  //增加監(jiān)聽(tīng) 監(jiān)聽(tīng)年份的改變</p><p>  yearsSpinner.addChangeListener(new ChangeListe

79、ner() {//注冊(cè)該組合框的事件監(jiān)聽(tīng)器</p><p>  public void stateChanged(ChangeEvent changeEvent) {</p><p>  int day = calendar.get(Calendar.DAY_OF_MONTH);</p><p>  calendar.set(Calendar.DAY_OF_MONT

80、H, 1);</p><p>  calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getValue()).intValue());</p><p>  int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);</p><p>  calenda

81、r.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);</p><p>  updateView();//更新顯示</p><p><b>  }</b></p><p><b>  });</b></p><p>  JPanel

82、 yearMonthPanel = new JPanel();//定義年月面板</p><p>  cPane.add(yearMonthPanel, BorderLayout.NORTH);//添加年月面板到日歷面板的南面(最上方)</p><p>  yearMonthPanel.setLayout(new BorderLayout());//邊布局模式</p><

83、p>  yearMonthPanel.add(new JPanel(), BorderLayout.CENTER);</p><p>  JPanel yearPanel = new JPanel();//構(gòu)建年份面板</p><p>  yearMonthPanel.add(yearPanel, BorderLayout.WEST);//年份面板添加到年月面板西部(左邊)</

84、p><p>  yearPanel.setLayout(new BorderLayout());//設(shè)置年份面板為邊布局并添加年份標(biāo)簽和組合框</p><p>  yearPanel.add(yearsLabel, BorderLayout.WEST);</p><p>  yearPanel.add(yearsSpinner, BorderLayout.CENTER)

85、;</p><p>  monthsLabel = new JLabel("月份: "); //設(shè)置月份標(biāo)簽顯示</p><p>  monthsComboBox = new JComboBox(); //向月份下拉框中增加內(nèi)容</p><p>  for (int i = 1; i <= 12; i++) { //構(gòu)造下拉框的12個(gè)月份

86、</p><p>  monthsComboBox.addItem(new Integer(i));</p><p><b>  }</b></p><p>  monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));//下拉框當(dāng)前月份為選中狀態(tài)</p><

87、p>  monthsComboBox.addActionListener(new ActionListener() { //注冊(cè)月份下拉框的事件監(jiān)聽(tīng)器</p><p>  public void actionPerformed(ActionEvent actionEvent) {</p><p>  int day = calendar.get(Calendar.DAY_OF_MON

88、TH);</p><p>  calendar.set(Calendar.DAY_OF_MONTH, 1);</p><p>  calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex());</p><p>  int maxDay = calendar.getActualMaximum(Calen

89、dar.DAY_OF_MONTH);</p><p>  calendar.set(Calendar.DAY_OF_MONTH, day > maxDay ? maxDay : day);</p><p>  updateView();//更新面板顯示</p><p><b>  }</b></p><p><

90、;b>  });</b></p><p>  JPanel monthPanel = new JPanel();//定義月份面板</p><p>  yearMonthPanel.add(monthPanel, BorderLayout.EAST);//添加月份面板到年月面板的東面(右面)</p><p>  monthPanel.setLayou

91、t(new BorderLayout());//月份面板設(shè)為邊布局方式</p><p>  monthPanel.add(monthsLabel, BorderLayout.WEST);//添加月份名稱標(biāo)簽到月份面板西面(左面)</p><p>  monthPanel.add(monthsComboBox, BorderLayout.CENTER);//添加月份下拉框到月份面板中間<

92、;/p><p>  daysModel = new AbstractTableModel() { //設(shè)置7行7列</p><p>  public int getRowCount() { //設(shè)置7行</p><p><b>  return 7;</b></p><p><b>  }<

93、/b></p><p>  public int getColumnCount() { //設(shè)置列7</p><p><b>  return 7;</b></p><p><b>  }</b></p><p>  public Object getValueAt(int row,

94、int column) {</p><p>  if (row == 0) { //第一行顯示星期</p><p>  return getHeader(column);</p><p><b>  }</b></p><p><b>  row--;</b></p><p>

95、;  Calendar calendar = (Calendar) MyCalendar.this.calendar.clone();</p><p>  calendar.set(Calendar.DAY_OF_MONTH, 1);</p><p>  int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);<

96、/p><p>  int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1;</p><p>  int index = row * 7 + column;</p><p>  int dayIndex = index - moreDayCount + 1;</p><p>  if (i

97、ndex < moreDayCount || dayIndex > dayCount) {</p><p>  return null;</p><p><b>  } else {</b></p><p>  return new Integer(dayIndex);</p><p><b>  

98、}</b></p><p><b>  }</b></p><p><b>  };</b></p><p>  daysTable = new CalendarTable(daysModel, calendar);//構(gòu)造日表格</p><p>  //設(shè)置每個(gè)call可以被選中<

99、;/p><p>  daysTable.setCellSelectionEnabled(true);//設(shè)置表格單元格可選擇</p><p>  daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);</p><p>  daysTable.setDefaultRenderer(daysTable

100、.getColumnClass(0), new TableCellRenderer() {</p><p>  public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,</p><p>  boolean hasFocus, int row, int colu

101、mn) {</p><p>  String text = (value == null) ? "" : value.toString();</p><p>  JLabel cell = new JLabel(text);</p><p>  cell.setOpaque(true);//繪制邊界內(nèi)的所有像素</p><p&

102、gt;  if (row == 0) {//第一行顯示星期,設(shè)置為星期的前景色和背景色</p><p>  cell.setForeground(headerForeground);</p><p>  cell.setBackground(headerBackground);</p><p><b>  } else {</b></p&

103、gt;<p>  if (isSelected) {//日期單元格如果選中,則設(shè)置為日期選中的前、背景色</p><p>  cell.setForeground(selectedForeground);</p><p>  cell.setBackground(selectedBackground);</p><p>  } else { //設(shè)置日

104、期單元格的普通前、背景色</p><p>  cell.setForeground(foreground);</p><p>  cell.setBackground(background);</p><p><b>  }</b></p><p><b>  }</b></p>&l

105、t;p>  return cell;</p><p><b>  }</b></p><p><b>  });</b></p><p>  updateView();</p><p>  cPane.add(daysTable, BorderLayout.CENTER);//添加日面板到日歷

106、面板中間</p><p><b>  }</b></p><p>  public static String getHeader(int index) {//設(shè)置第一行星期的顯示</p><p>  switch (index) {</p><p><b>  case 0:</b></p&

107、gt;<p>  return WEEK_SUN;</p><p><b>  case 1:</b></p><p>  return WEEK_MON;</p><p><b>  case 2:</b></p><p>  return WEEK_TUE;</p>

108、<p><b>  case 3:</b></p><p>  return WEEK_WED;</p><p><b>  case 4:</b></p><p>  return WEEK_THU;</p><p><b>  case 5:</b></p&

109、gt;<p>  return WEEK_FRI;</p><p><b>  case 6:</b></p><p>  return WEEK_SAT;</p><p><b>  default:</b></p><p>  return null;</p><

110、;p><b>  }</b></p><p><b>  }</b></p><p>  public void updateView() {//更新面板顯示方法</p><p>  daysModel.fireTableDataChanged();</p><p>  daysTable.s

111、etRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH),</p><p>  calendar.get(Calendar.WEEK_OF_MONTH));</p><p>  daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1,

112、</p><p>  calendar.get(Calendar.DAY_OF_WEEK) - 1);</p><p><b>  }</b></p><p>  //設(shè)置日歷的table</p><p>  public static class CalendarTable extends JTable {//表格類&

113、lt;/p><p>  private Calendar calendar;</p><p>  public CalendarTable(TableModel model, Calendar calendar) {//構(gòu)造方法</p><p>  super(model);</p><p>  this.calendar = calendar;

114、</p><p><b>  }</b></p><p>  public void changeSelection(int row, int column, boolean toggle, boolean extend) {//選擇表格單元格時(shí)</p><p>  super.changeSelection(row, column, togg

115、le, extend);</p><p>  if (row == 0) {//選擇為第一行(星期)時(shí)不改變單元格</p><p><b>  return;</b></p><p><b>  }</b></p><p>  Object obj = getValueAt(row, column)

116、;</p><p>  if (obj != null) {</p><p>  calendar.set(Calendar.DAY_OF_MONTH, ((Integer)obj).intValue());</p><p><b>  }</b></p><p><b>  }</b></p

117、><p><b>  }</b></p><p>  //讓applet作為一個(gè)可執(zhí)行的程序來(lái)運(yùn)行</p><p>  public static void main(String[] args) {</p><p>  JFrame frame = new JFrame("Calendar Application

118、");</p><p>  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);</p><p>  MyCalendar myCalendar = new MyCalendar();</p><p>  myCalendar.init();</p><p>  frame.ge

119、tContentPane().add(myCalendar);</p><p>  frame.setSize(400, 250);</p><p>  frame.show();</p><p><b>  }</b></p><p><b>  }</b></p><p>

120、;<b>  7.調(diào)試記錄</b></p><p><b>  程序功能調(diào)試如下:</b></p><p>  運(yùn)行程序,出現(xiàn)日歷界面:</p><p><b>  8.總結(jié)</b></p><p>  (1)選題目的:本次課程設(shè)計(jì)為課本后設(shè)計(jì)題目任選一題進(jìn)行設(shè)計(jì)。思考一段時(shí)間

121、后,我決定做一個(gè)小日歷組件的設(shè)計(jì)。主要考慮到本學(xué)期時(shí)間少課程內(nèi)容多,JAVA課程基礎(chǔ)內(nèi)容掌握并不是很抓實(shí),而對(duì)于設(shè)計(jì)一個(gè)小日歷組件,由于其功能簡(jiǎn)單設(shè)計(jì)也相對(duì)較易,對(duì)于我個(gè)人的學(xué)習(xí)情況比較合適,并且通過(guò)設(shè)計(jì)這樣的一個(gè)日歷小組件,也能使自己對(duì)JAVA的一些基礎(chǔ)知識(shí)掌握的更加牢固。</p><p> ?。?)對(duì)于本小日歷的設(shè)計(jì),首先考慮其功能有哪些,需要顯示什么,如何進(jìn)行窗體構(gòu)建布局,需要用哪些知識(shí)點(diǎn),如相關(guān)的類和對(duì)象

122、等。最后,就是根據(jù)初步設(shè)計(jì)的功能和布局構(gòu)架,考慮用源代碼進(jìn)行實(shí)現(xiàn)了。</p><p>  (3)本小日歷組件在設(shè)計(jì)過(guò)程中參考了一些網(wǎng)絡(luò)上的日歷組件設(shè)計(jì)程序,只是那些程序大都使用功能相對(duì)較豐富,涉及到的知識(shí)也比較多,對(duì)于自己目前所掌握的內(nèi)容來(lái)說(shuō)有點(diǎn)廣博。不過(guò)那些程序?qū)θ諝v實(shí)現(xiàn)的一些思想對(duì)我確實(shí)有很多啟發(fā)。本小日歷組件設(shè)計(jì)過(guò)程中也參考了一些他人設(shè)計(jì)的代碼。在設(shè)計(jì)本小日歷組件過(guò)程中遇到過(guò)許多問(wèn)題,最后都是在網(wǎng)絡(luò)搜集詢問(wèn)

123、的幫助下一一得以解決。</p><p>  經(jīng)過(guò)了長(zhǎng)時(shí)間的反復(fù)編寫(xiě)調(diào)試,課本和網(wǎng)上查閱相關(guān)資料相關(guān)文章,終于完成了整個(gè)課程設(shè)計(jì)。在這個(gè)過(guò)程中,在把書(shū)本上的知識(shí)給系統(tǒng)的復(fù)習(xí)了一下的同時(shí),同時(shí)也發(fā)現(xiàn)了自己的太多不足,對(duì)JAVA2語(yǔ)言整體知識(shí)構(gòu)架不夠熟悉,不能靈活地運(yùn)用所學(xué)的知識(shí)點(diǎn)。自己的編程方式也不是太標(biāo)準(zhǔn),經(jīng)常出現(xiàn)代碼寫(xiě)錯(cuò)而調(diào)試很久的低級(jí)錯(cuò)誤情況出現(xiàn)。</p><p>  通過(guò)這次課程設(shè)計(jì),

124、我明白了編寫(xiě)程序,不僅要求對(duì)課本知識(shí)有較深刻的了解,同時(shí)要求程序設(shè)計(jì)者有較強(qiáng)的思維和動(dòng)手能力。還要熟悉常用的編程技巧和編程思想,不能只關(guān)心程序的運(yùn)行結(jié)果,更要注重程序代碼的結(jié)構(gòu),編程者更要有嚴(yán)謹(jǐn)?shù)貞B(tài)度。還有通過(guò)設(shè)計(jì)過(guò)程中大量地查閱網(wǎng)絡(luò)文章,對(duì)一些關(guān)鍵知識(shí)點(diǎn)逐個(gè)地了解并解決相關(guān)問(wèn)題。所以網(wǎng)絡(luò)這個(gè)強(qiáng)大的工具,確實(shí)是我們學(xué)習(xí)之中可以借助的一個(gè)很好的幫手。網(wǎng)絡(luò)是我們學(xué)習(xí)的最好的老師之一。有問(wèn)題,問(wèn)網(wǎng)絡(luò),是一個(gè)很好的習(xí)慣。</p>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論