实验五Java事件处理.docx

上传人:b****6 文档编号:4456275 上传时间:2022-12-01 格式:DOCX 页数:13 大小:18.85KB
下载 相关 举报
实验五Java事件处理.docx_第1页
第1页 / 共13页
实验五Java事件处理.docx_第2页
第2页 / 共13页
实验五Java事件处理.docx_第3页
第3页 / 共13页
实验五Java事件处理.docx_第4页
第4页 / 共13页
实验五Java事件处理.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验五Java事件处理.docx

《实验五Java事件处理.docx》由会员分享,可在线阅读,更多相关《实验五Java事件处理.docx(13页珍藏版)》请在冰豆网上搜索。

实验五Java事件处理.docx

实验五Java事件处理

实验五Java事件处理

实验目的

1.掌握Java语言中的事件处理方法

2.掌握Java语言中事件源、监视器和处理事件的接口的概念

实验内容

1.图形用户界面设计程序(ArtFont.java)

在实验三第1题的基础上,添加事件处理机制,并逐步完善程序功能。

分别用ArtFont类的对象做监视器和匿名内部类的对象做监视器实现。

要求实现如下功能:

当在文本框中输入文字后回车,在文本域中显示输入的文字。

当分别选择粗体和斜体复选框时,文本域中的文字分别显示粗体和斜体样式。

当点击颜色按钮时,出现颜色选择对话框,选择需要的颜色,按确定按钮后,按钮的前景色和文本域的前景色设置为选定的颜色。

当选择字体样式下拉框中的某一字体样式时,文本域中的文字设置为指定的字体样式。

当选择字体大小下拉框中的某一字体大小时,文本域中的文字设置为指定的字体大小。

当选择窗体样式下拉框中的某一窗体效果时,窗体外观改变为指定的窗体外观。

图1程序界面运行效果

packageSy;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassArtFontextendsJFrame{

staticArtFontartFont;

JComboBoxfontType;//字体样式下拉框

JComboBoxfontSize;//字体大小下拉框

JComboBoxwindowStyle;//窗体样式下拉框

JCheckBoxboldBx;//粗体按钮

JCheckBoxitalicBx;//斜体按钮

JButtoncolorBtn;//颜色按钮

String[]fontNames;//字体名称

String[]fontSizes;//字体大小

JLabellabel;//输入提示标签

JTextFieldinputText;//文字输入框

JTextAreatxtArea;//文字显示区

JPanelnorthPanel;//字体设置

JPanelcenterPanel;//显示效果区

JPanelsouthPanel;//样式设置

Fontfont;

intboldStyle,italicStyle;

intfontSizeStyle;

StringfontNameStyle;

ColorcolorStyle=Color.black;//设置字体的默认颜色为黑色

String[]style={"默认显示效果","Windows显示效果","Unix显示效果"};

publicArtFont(){

super("字体设置");

//设置默认字体

boldStyle=0;

italicStyle=0;

fontSizeStyle=10;

fontNameStyle="宋体";

font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

northPanel=getNorthPanel();

centerPanel=getCenterPanel();

southPanel=getSouthPanel();

//设置容器

Containercontainer=getContentPane();

container.setLayout(newBorderLayout());

add(northPanel,BorderLayout.NORTH);//将northPanel添加到窗体的北部

add(centerPanel,BorderLayout.CENTER);//将centerPanel添加到窗体的中部

add(southPanel,BorderLayout.SOUTH);//将southPanel添加到窗体的南部

setSize(500,300);

setLocationRelativeTo(null);//将窗体位于屏幕的中央

setVisible(true);

}

privateJPanelgetNorthPanel(){

JPanelpanel=newJPanel();

label=newJLabel("输入");

inputText=newJTextField(10);

boldBx=newJCheckBox("粗体");

italicBx=newJCheckBox("斜体");

colorBtn=newJButton("颜色");

inputText.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//文本输入

txtArea.setText(inputText.getText());

}

});

boldBx.addItemListener(newItemListener(){

@Override

publicvoiditemStateChanged(ItemEvente){

//加粗

if(e.getStateChange()==ItemEvent.SELECTED)

boldStyle=1;

else

boldStyle=0;

font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

txtArea.setFont(font);

}

});

italicBx.addItemListener(newItemListener(){

@Override

publicvoiditemStateChanged(ItemEvente){

//斜体

if(e.getStateChange()==ItemEvent.SELECTED)

italicStyle=1;

else

italicStyle=0;

font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

txtArea.setFont(font);

}

});

colorBtn.addActionListener(newActionListener(){

@Override

publicvoidactionPerformed(ActionEvente){

//改变颜色

colorStyle=JColorChooser.showDialog(null,"请选择一种颜色",colorStyle);

colorBtn.setForeground(colorStyle);

txtArea.setForeground(colorStyle);

font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

txtArea.setFont(font);

}

});

panel.add(label);

panel.add(inputText);

panel.add(boldBx);

panel.add(italicBx);

panel.add(colorBtn);

returnpanel;

}

privateJPanelgetCenterPanel(){

JPanelpanel=newJPanel();

panel.setLayout(newBorderLayout());

txtArea=newJTextArea();

panel.add(newJScrollPane(txtArea),BorderLayout.CENTER);

returnpanel;

}

privateJPanelgetSouthPanel(){

JPanelpanel=newJPanel();

//获得系统默认字体

GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();

fontNames=ge.getAvailableFontFamilyNames();

fontType=newJComboBox(fontNames);

//设置字体大小

fontSizes=newString[63];

for(inti=0;i

fontSizes[i]=Integer.toString(i+10);

}

fontSize=newJComboBox(fontSizes);

windowStyle=newJComboBox(style);

fontType.addItemListener(newItemListener(){

@Override

publicvoiditemStateChanged(ItemEvente){

//字体的类型

fontNameStyle=(String)e.getItem();

font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

txtArea.setFont(font);

}

});

fontSize.addItemListener(newItemListener(){

@Override

publicvoiditemStateChanged(ItemEvente){

//字体的大小

Strings=(String)e.getItem();

fontSizeStyle=Integer.parseInt(s);

font=newFont(fontNameStyle,boldStyle+italicStyle,fontSizeStyle);

txtArea.setFont(font);

}

});

windowStyle.addItemListener(newItemListener(){

@Override

publicvoiditemStateChanged(ItemEvente){

//改变窗口

Strings=(String)e.getItem();

StringclassName="";

if(s.equals("Windows显示效果"))

className="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";

elseif(s.equals("Unix显示效果"))

className="com.sun.java.swing.plaf.motif.MotifLookAndFeel";

elseif(s.equals("默认显示效果"))

className=UIManager.getCrossPlatformLookAndFeelClassName();

try{

UIManager.setLookAndFeel(className);

SwingUtilities.updateComponentTreeUI(artFont);

}catch(Exceptionde){

System.out.println("Exceptionhappened!

");

}

}

});

panel.add(fontType);

panel.add(fontSize);

panel.add(windowStyle);

returnpanel;

}

publicstaticvoidmain(Stringargs[]){

artFont=newArtFont();

artFont.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

2.日历应用程序设计

在实验三第2题的基础上,添加事件处理机制,并逐步完善程序功能。

分别用CalendarFrame类的对象做监视器和匿名内部类的对象做监视器实现。

要求实现如下功能:

在文本框inputYear中输入年份,验证年份的有效性;按回车键后,显示输入年份的正确日历

单击previousMonth按钮可以显示当前月的上一月的日历;如果月份小于1,则显示上一年的12月

单击nextMonth按钮,可以显示当前月的下一月的日历;如果月份大于1,则显示下一年的1月

CalendarBean.java

packageSy;

importjava.util.Calendar;

publicclassCalendarBean{

Stringday[];

intyear=2013,month=0;

publicvoidsetYear(intyear){

this.year=year;

}

publicintgetYear(){

returnyear;

}

publicvoidsetMonth(intmonth){

this.month=month;

}

publicintgetMonth(){

returnmonth;

}

//返回某年某月1号开始的日期数组

publicString[]getCalendar(){

Stringa[]=newString[42];

Calendar日历=Calendar.getInstance();

//注意:

1月份是从0开始,所以要减1

日历.set(year,month-1,1);

int星期几=日历.get(Calendar.DAY_OF_WEEK)-1;

intday=0;

if(month==1||month==3||month==5||month==7||month==8||month==10||month==12){

day=31;

}

if(month==4||month==6||month==9||month==11){

day=30;

}

if(month==2){

if(((year%4==0)&&(year%100!

=0))||(year%400==0)){

day=29;

}else{

day=28;

}

}

for(inti=星期几,n=1;i<星期几+day;i++){

a[i]=String.valueOf(n);

n++;

}

returna;

}

}

CalendarFrame.java

packageSy;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

publicclassCalendarFrameextendsFrame{

LabellabelDay[]=newLabel[42];

LabellabelYear;

ButtontitleName[]=newButton[7];

ButtonnextMonth,previousMonth;

LabelshowMessage;

TextFieldinputYear;

CalendarBeancalendar;

Stringname[]={"日","一","二","三","四","五","六"};

intyear=2013,month=1;

Stringdays[];

publicCalendarFrame(){

calendar=newCalendarBean();

calendar.setYear(year);

calendar.setMonth(month);

days=calendar.getCalendar();

ScrollPanescrollPane=newScrollPane();

scrollPane.add(getCenterPanel());

add(scrollPane,BorderLayout.CENTER);//窗口添加scrollPane在中心区域

add(getNorthPanel(),BorderLayout.NORTH);//窗口添加pNorth在北面区域

add(getSouthPanel(),BorderLayout.SOUTH);//窗口添加pSouth在南区域。

}

privatePanelgetNorthPanel(){

Panelpanel=newPanel();

labelYear=newLabel("请输入年份:

");

inputYear=newTextField(10);

previousMonth=newButton("上月");

nextMonth=newButton("下月");

inputYear.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

//文本输入

try{

year=Integer.parseInt(inputYear.getText());

}catch(NumberFormatExceptione1){

JOptionPane.showMessageDialog(null,"您输入的年份有误,请重新输入!

");

inputYear.setFocusable(true);

}

calendar.setYear(year);

calendar.setMonth(month);

days=calendar.getCalendar();

for(inti=0;i<42;i++){

labelDay[i].setText(days[i]);

}

showMessage.setText("日历:

"+calendar.getYear()+"年"

+calendar.getMonth()+"月");

}

});

previousMonth.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

//上月按钮

month--;

if(month<1){

year--;

month=1;

}

calendar.setYear(year);

calendar.setMonth(month);

days=calendar.getCalendar();

for(inti=0;i<42;i++){

labelDay[i].setText(days[i]);

}

showMessage.setText("日历:

"+calendar.getYear()+"年"

+calendar.getMonth()+"月");

}

});

nextMonth.addActionListener(newActionListener(){

publicvoidactionPerformed(ActionEvente){

//下月按钮

month++;

if(month>12){

year++;

month=1;

}

calendar.setYear(year);

calendar.setMonth(month);

days=calendar.getCalendar();

for(inti=0;i<42;i++){

labelDay[i].setText(days[i]);

}

showMessage.setText("日历:

"+calendar.getYear()+"年"

+calendar.getMonth()+"月");

}

});

panel.add(labelYear);

panel.add(inputYear);

panel.add(previousMonth);

panel.add(nextMonth);

returnpanel;

}

privatePanelgetCenterPanel(){

Panelpanel=newPanel();

panel.setLayout(newGridLayout(7,7));

//将panel的布局设置为7行7列的GridLayout布局

for

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1