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(x
{
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
版权声明:本文标题:《Java语言程序设计》(第3版)第6章 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/free/1703393931h449344.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论