Java实验十一题目解析及实例代码.docx
《Java实验十一题目解析及实例代码.docx》由会员分享,可在线阅读,更多相关《Java实验十一题目解析及实例代码.docx(10页珍藏版)》请在冰点文库上搜索。
Java实验十一题目解析及实例代码
窗口程序:
实现程序并补全功能:
实现圆变小及圆向上、下、右移动功能。
importjava.awt.BorderLayout;
importjava.awt.Graphics;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavafx.scene.input.KeyCode;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
publicclasst1extendsJFrameimplementsActionListener,KeyListener,MouseListener{
privateJButtonbtAdd;//定义按钮
privatemyCirclemc;//定义myCircle引用
privateJPanelp1=newJPanel();//定义JPanel
publict1()
{
setLayout(newBorderLayout());//设置布局
mc=newmyCircle();//生成实体
btAdd=newJButton("增大");//生成实体
p1.add(btAdd);//添加到JPanel
add(mc,BorderLayout.CENTER);//添加到窗口
add(p1,BorderLayout.SOUTH);//添加到窗口
mc.setFocusable(true);//设置获得焦点
btAdd.addActionListener(this);//添加监听(按钮单击事件
mc.addKeyListener(this);//添加监听(键盘事件
mc.addMouseListener(this);//添加监听(鼠标事件
setSize(400,400);//设置窗口大小
setLocationRelativeTo(null);//设置窗口居中放置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出方式
setVisible(true);//设置可见性
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newt1();
}
publicvoidkeyPressed(KeyEvente){
//键盘按下事件
switch(e.getKeyCode()){
caseKeyEvent.VK_LEFT:
mc.leftMove();
break;
}
}
publicvoidkeyReleased(KeyEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidkeyTyped(KeyEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidactionPerformed(ActionEvente){
//按钮单击事件
if(e.getSource()==btAdd)
{
mc.addR();
mc.requestFocus();
}
}
publicvoidmouseClicked(MouseEvente){
//鼠标单击事件
mc.setxy(e.getX(),e.getY());
}
publicvoidmouseEntered(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmouseExited(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmousePressed(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmouseReleased(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
}
classmyCircleextendsJPanel//生成JPanel的子类(画圆及控件圆(变大、变小、上、下、左、右移动)
{
privateintradius=5;//圆半径
privateintx=150;//圆外接矩形左上角x坐标
privateinty=150;//圆外接矩形左上角y坐标
publicvoidaddR()//控件圆增大的方法
{
radius=radius+5;
repaint();//重绘圆
}
publicvoidsetxy(intx2,inty2){
//设置圆外接矩形左上角x,y坐标的方法
x=x2;
y=y2;
repaint();
}
publicvoidleftMove()//控件圆向左移动
{
x=x-5;
if(x<0)x=0;
repaint();
}
publicvoidpaint(Graphicsg){
//绘制圆
super.paint(g);
g.drawOval(x,y,2*radius,2*radius);
}
}
答题解析:
此题主要考查:
1类的构建及应用,若要控制圆上下左右移动,并不是在类外编写该功能,而是类本身具有移动功能,类外生成实体并调用该功能。
2.图形的绘制及重绘功能。
实例代码:
packagetest11;
importjava.awt.BorderLayout;
importjava.awt.Graphics;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.KeyEvent;
importjava.awt.event.KeyListener;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjavafx.scene.input.KeyCode;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JPanel;
publicclasst1extendsJFrameimplementsActionListener,KeyListener,MouseListener{
privateJButtonbtAdd;//定义按钮
privatemyCirclemc;//定义myCircle引用
privateJPanelp1=newJPanel();//定义JPanel
publict1()
{
setLayout(newBorderLayout());//设置布局
mc=newmyCircle();//生成实体
btAdd=newJButton("增大");//生成实体
p1.add(btAdd);//添加到JPanel
add(mc,BorderLayout.CENTER);//添加到窗口
add(p1,BorderLayout.SOUTH);//添加到窗口
mc.setFocusable(true);//设置获得焦点
btAdd.addActionListener(this);//添加监听(按钮单击事件
mc.addKeyListener(this);//添加监听(键盘事件
mc.addMouseListener(this);//添加监听(鼠标事件
setSize(400,400);//设置窗口大小
setLocationRelativeTo(null);//设置窗口居中放置
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出方式
setVisible(true);//设置可见性
}
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
newt1();
}
publicvoidkeyPressed(KeyEvente){
//键盘按下事件
switch(e.getKeyCode()){
caseKeyEvent.VK_LEFT:
//左移
mc.leftMove();
break;
caseKeyEvent.VK_RIGHT:
//右移
mc.rightMove();
break;
caseKeyEvent.VK_UP:
//上移
mc.upMove();
break;
caseKeyEvent.VK_DOWN:
//下移
mc.downMove();
break;
}
}
publicvoidkeyReleased(KeyEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidkeyTyped(KeyEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidactionPerformed(ActionEvente){
//按钮单击事件
if(e.getSource()==btAdd)
{
mc.addR();
mc.requestFocus();
}
}
publicvoidmouseClicked(MouseEvente){
//鼠标单击事件
mc.setxy(e.getX(),e.getY());
}
publicvoidmouseEntered(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmouseExited(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmousePressed(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
publicvoidmouseReleased(MouseEventarg0){
//TODOAuto-generatedmethodstub
}
}
classmyCircleextendsJPanel//生成JPanel的子类(画圆及控件圆(变大、变小、上、下、左、右移动)
{
privateintradius=5;//圆半径
privateintx=150;//圆外接矩形左上角x坐标
privateinty=150;//圆外接矩形左上角y坐标
publicvoidaddR()//控件圆增大的方法
{
radius=radius+5;
repaint();//重绘圆
}
publicvoidsetxy(intx2,inty2){
//设置圆外接矩形左上角x,y坐标的方法
x=x2;
y=y2;
repaint();
}
publicvoidleftMove()//控制圆向左移动
{
x=x-5;
if(x<0)x=0;
repaint();
}
publicvoidrightMove()//控制圆向右移动
{
x=x+5;
if(x>this.getWidth()-2*radius)x=this.getWidth()-2*radius;
repaint();
}
publicvoidupMove()//控制圆向上移动
{
y=y-5;
if(y<0)y=0;
repaint();
}
publicvoiddownMove()//控制圆向下移动
{
y=y+5;
if(y>(this.getHeight()-2*radius))y=this.getHeight()-2*radius;
repaint();
}
publicvoidpaint(Graphicsg){
//绘制圆
super.paint(g);
g.drawOval(x,y,2*radius,2*radius);
}
}