当前位置:文档之家› Java图形用户界面编程练习

Java图形用户界面编程练习

实验八Java图形用户界面编程练习实验目的1、掌握 Java 的 GUI 设计技术2、掌握 AWT 和 Swing 的应用技巧实验要求1、编写一个程序学习使用处理ActiongEvent事件2、编写一个程序学习使用布局类实验内容1.猜数字游戏实验目的:练习图形用户界面编程,学习处理ActionEvent事件。

实用要求:要求程序中要有2个按钮buttonGetNumber和buttonNumber,用户单击buttonGetNumber 按钮可以得到一个随机数,然后在文本框中输入猜测数字,再单击buttonNumber按钮,程序根据用户的猜测给出提示信息。

运行效果示例:程序模板:按模板要求,将【代码】替换为Java程序代码。

GuessExample.javaimport java.awt.*;import java.awt.event.*;import java.applet.*;public class GuessExample extends Applet implements ActionListener {int number;TextField inputNumber;Label feedBack;Button buttonGetNumber,buttonEnter;public void init(){buttonGetNumber=new Button("得到一个随机数");feedBack=new Label ("无反馈信息",Label.CENTER);feedBack.setBackground(Color.green);inputNumber=new TextField("0",5);buttonEnter=new Button("确定");【代码1】//按钮buttonEnter增加ActionEvent事件监视器,监视器为当前Java Applet。

【代码2】//按钮buttonGetNumber增加ActionEvent事件监视器,监视器为当前Java Applet。

add(new Label("获取1-100之间的随机数:"));add(buttonGetNumber);add(new Label("输入您的猜测:"));add(inputNumber);add(new Label("单击确定按钮:"));add(buttonEnter);add(new Label("反馈信息:"));add(feedBack);}public void actionPerformed(ActionEvent e){if(【代码3】) //判断事件源是否是buttonGetNumber。

{number=(int)(Math.random()*100)+1;}else if(【代码4】) //判断事件源是否是buttonEnter。

{int guess=0;try {guess=Integer.parseInt(【代码5】); //返回inputNumber中的文本。

if(guess==number){【代码6】//feedBack设置提示文本:"猜对了!"。

}else if(guess>number){【代码7】//feedBack设置提示文本:"猜大了!。

inputNumber.setText(null);}else if(guess<number){【代码8】//feedBack设置提示文本:"猜小了!。

inputNumber.setText(null);}}catch(NumberFormatException event){【代码9】 //feedBack设置提示文本:"请输入数字字符"。

}}}}实验后的练习:1、将给上述程序增加记录猜测次数的功能,每次反馈这是第几次猜测,当猜测成功时反馈一共猜测了几次。

2.布局和日历实验目的:学习使用布局类实用要求:利用Swing编写一个GUI程序,JFrame使用BorderLayout布局。

在JFrame的中心添加一个Panel容器pCenter, pCenter的布局是7行7列的GridLayout布局,pCenter中放置49个标签,用来显示日历。

JFrame的北面添加一个Panel容器pNorth,其布局是FlowLayout 布局,pNorth放置两个按钮nextMonth和previousMonth,单击nextMonth按钮,可以显示当前月的下一月的日历;单击previousMonth按钮,可以显示当前月的上一月的日历。

JFrame 的南面添加一个Panel容器pSouth,其布局也是FlowLayout,pSouth中放置一个标签来显示一些日历信息。

运行效果示例:程序模板:按模板要求,将【代码】替换为Java程序代码。

CalendarExample.javaimport java.util.*;import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;public class CalendarExample extends JFrame implements ActionListener{JLabel a[]=new JLabel[42];JButton titleName[]=new JButton[7];String name[]={"星期日","星期一","星期二","星期三", "星期四","星期五","星期六"};JButton nextMonth,previousMonth;int year=2008,month=1;CalendarBean calendar;JLabel showMessage=newJLabel("",JLabel.CENTER);public CalendarExample(){【代码1】//将Java Applet的布局设置为BorderLayout 布局。

JPanel pCenter=new JPanel();【代码2】//将pCenter的布局设置为7行7列的GridLayout 布局。

for(int i=0;i<7;i++){titleName[i]=new JButton(name[i]);【代码3】//向pCenter添加组件titleName[i]。

}for(int i=0;i<42;i++){a[i]=new JLabel("",JLabel.CENTER);【代码4】//向pCenter添加组件a[i]。

}calendar=new CalendarBean();calendar.setYear(year);calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){a[i].setText(day[i]);}nextMonth=new JButton("下月");previousMonth=new JButton("上月");【代码5】//为nextMonth按钮添加Action事件监听器。

【代码6】//为previousMonth按钮添加Action事件监听器。

JPanel pNorth=new JPanel(),pSouth=new JPanel();pNorth.add(previousMonth);pNorth.add(nextMonth);pSouth.add(showMessage);showMessage.setText("日历:"+calendar.getYear()+"年"+ calendar.getMonth()+"月" );ScrollPane scrollPane=new ScrollPane();scrollPane.add(pCenter);【代码7】// 将scrollPane添加到Frame的中心区域。

【代码8】// 将pNorth添加到Frame的北面区域。

【代码9】// 将pSouth添加到Frame的南区域。

}public static void main(String[] args){【代码9】//实现main方法,显示日历界面,同时在关闭界面时退出程序。

}public void actionPerformed(ActionEvent e){if(e.getSource()==nextMonth){month=month+1;if(month>12)month=1;calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){a[i].setText(day[i]);}}else if(e.getSource()==previousMonth){month=month-1;if(month<1)month=12;calendar.setMonth(month);String day[]=calendar.getCalendar();for(int i=0;i<42;i++){a[i].setText(day[i]);}}showMessage.setText("日历:"+calendar.getYear()+"年"+calendar.getMonth()+"月" );}}class CalendarBean{String day[];int year=2008,month=0;public void setYear(int year){this.year=year;}public int getYear(){return year;}public void setMonth(int month){this.month=month;}public int getMonth(){return month;}public String[] getCalendar(){String a[]=new String[42]; //存放日期的一维数组。

相关主题