admin 管理员组

文章数量: 887021


2023年12月24日发(作者:为什么文本效果设置不了)

第六章 Java图形与图像处理

【1】用绘制线段的方法输出一个红色的“王”字。

[解答]:代码如下:

import .*;

import .*;

public class DrawWang extends JFrame {

public DrawWang(){

super("在窗体上绘制一个王字");

}

public void paint(Graphics g){

or();

ne(10,50,100,50);

ne(10,100,100,100);

ne(10,150,100,150);

ne(60,50,60,150);

}

public static void main(String[] args) {

DrawWang dw = new DrawWang();

e(150,200);

ible(true);

}

}

运行效果如下:

【2】编写一个程序绘制8个同心圆,各园相差20个像素点。

[解答]:代码如下:

import .*;

import .*;

public class EightCircle extends JFrame {

public EightCircle(){

super("在窗体上绘制八个同心圆");

1

}

public void paint(Graphics g){

or();

al(200,200,10,10);

al(180,180,50,50);

al(160,160,90,90);

al(140,140,130,130);

al(120,120,170,170);

al(100,100,210,210);

al(80,80,250,250);

al(60,60,290,290);

}

public static void main(String[] args) {

EightCircle ec = new EightCircle();

e(500,400);

ible(true);

}

}

运行效果如下:

【3】编写一个程序绘制一把打开的折扇。

[解答]:代码如下:

import .*;

import .*;

public class T5 extends JFrame {

public T5(){

super("打开的折扇");

2

}

public void paint(Graphics g){

or();

c(50,50,300,300,15,150);

or();

c(140,140,120,120,15,150);

or();

c(180,180,40,40,15,150);

}

public static void main(String[] args) {

T5 ec = new T5();

e(500,400);

ible(true);

}

}

运行效果如下:

【4】简述Java的事件处理机制。什么是事件源?什么是监听者?在Java的图形用户界面中,谁可以充当事件源?谁可以充当监听者?

[解答]:java的事件处理机制就是,事件源允许监听器注册的事件对象,在事件发生的时候想相关的注册对象发送一个,事件对象,监听器便根据相关的信息来选择运行相关的代码。

事件源:英文名为event source,是指事件发生的地方,也就是引起事件的组件,按钮Button,文本组件等都可以当做事件源。比如说,你点击一个button,那么button就是事件源,要想使button对某些事件进行响应,你就需要注册特定的监听者。(具体请看第5章的事件处理)

监听者:英文名为event handler事件处理者,又叫监听器。具体的对监听的事件类,当它监听到event object产生的时候,它就调用相应的方法,进行处理。

在java中,AWT组件和swing组件都可以当做事件源;.*,里面各种类都可以为监听者。

3

【5】动作事件的事件源可以有哪些?如何响应动作事件?

[解答]:动作事件的事件源可以有:Button,JButton,MenuItem,等。

响应动作事件的过程一般为:

声明和实例化事件源,如:Button btn=new Button(“确定”);

注册监听:ionListener(this); //this指明是在当前类实现处理

实现接口:public void actionPerformed(ActionEvent e){//具体代码};

【6】应用键盘事件编写一个推箱子的游戏程序。

[解答]:

import .*;

import .*;

import .*;

public class Test6 extends JFrame implements KeyListener

{

key_move_Canvas drawing =new key_move_Canvas();

public Test6() //初始化方法,生成按钮,并设置监听器

{

super("");

setSize(500, 500);

setVisible(true);

setLayout(new FlowLayout());

add(drawing);

Listener(this);//监听画布

tFocus();//设置焦点(画布对象)

validate();

setDefaultCloseOperation(EXIT_ON_CLOSE);

}

public void keyPressed(KeyEvent e) //设置键盘事件

{

if(Code()==_UP)//向上的方向键

{

();

}

if(Code()==_DOWN)

{

wn();

}

if(Code()==_LEFT)

{

ft();

}

if(Code()==_RIGHT)

4

{

ght();

}

}

public void keyTyped(KeyEvent e) {}

public void keyReleased(KeyEvent e) {}

public static void main(String args[])

{

new Test6();

}

}

class key_move_Canvas extends Canvas

{

(红色图形块推着蓝色图形块一起移动)

int x=360,y=180;

int m=200,n=200;

int step=10;

key_move_Canvas()

{

setSize(500,500);//未设置的画布大小为一个像素,因此需要设置大小

}

public void paint(Graphics g)

{

or();

ct(x+2,y+2,32,32);

or();

ct(x, y, 30, 30);

or();

ct(m + 2, n + 2, 32, 32);

or();

ct(m, n, 30, 30);

}

public void moveUp()//方块向上移动

{

if(xm-30&&y==n+30)

{

if(n>-30)

{

n-=step;

y-=step;

}

5

else

{

n=getSize().height;

}

repaint();//重绘图形

}

else//没有遇到的时候

{

if (y >-30)

{

y -= step;

}

else

{

y = getSize().height +30;

}

repaint();//重绘图形

}

}

public void moveDown()//方块向下移动

{

if (x < m + 30 && x > m - 30 && y == n - 30)

{

if (n < getSize().height)

{

n+=step;

y+= step;

}

else

{

n =- 30;

}

repaint();//重绘图形

}

else//方块没有相遇的时候

{

if (y < getSize().height)

{

y += step;

}

else

{

y = -60;

}

6

repaint();//重绘图形

}

}

public void moveLeft()//方块向左移动

{

if(x-30==m&&y>n-30&&y

{

if(m>-30)

{

m-=step;

x-=step;

}

else

{

m=getSize().width+step-30;

}

repaint();//重绘图形

}

else//没有遇到的时候

{

if(x>-30)

{

x-=step;

}

else

{

x=getSize().width+step;

}

repaint();//重绘图形

}

}

public void moveRight()//方块向右移动

{

if (x + 30 == m && y > n - 30 && y < n + 30)

{

if (m < getSize().width)

{

m += step;

x += step;

}

else

{

7

m = 0;

}

repaint();//重绘图形

}

else//没有遇到的时候

{

if (x < getSize().width) {

x += step;

}

}

}

else

{

x = -30;

}

repaint();//重绘图形

}

8


本文标签: 事件 图形 时候 设置 绘制