j = myList.getSelectedIndex(); repaint(); }
public void paint( Graphics g ) {
if(b) switch(j) {
case 0: g.setColor( colors[j] );g.drawRect(10,10,30,60); break; case 1: g.setColor( colors[j] );g.drawOval(10,10,30,30); break; case 2: g.setColor( colors[j] );g.drawOval(10,10,60,30); break; case 3: g.setColor( colors[j] );g.fillArc(10,10,80,60,30,30); break; case 4: g.setColor( colors[j] );g.drawLine(10,10,60,60); } } }
练习14(11)
掌握:(1) 鼠标事件(鼠标进入、移出、压下、点击、释放)的编程。 (2) 键盘事件(按下键、松开键、点击键)的编程。 (3) 布局管理器。
1. 编写Applet, 当鼠标进入Applet时,通过paint()方法以(60,60)为左上角坐标,填充一个颜色为黄色的、边长为60的正方形;鼠标移出时,以(60,120)为左上角坐标,画一个颜色为绿色的、边长为30的正方形框。 @程序
import java.awt.*; import java.applet.*;
import java.awt.event.*;
public class Applet1 extends Applet implements MouseListener {
int i;
public void init(){
addMouseListener(this); }
public void paint(Graphics g) {
if(i==1) { g.setColor(Color. yellow); g.fillRect(60,60,60,60); } if(i==2) { g.setColor(Color.green); g.drawRect(60,120,30,30); }
} } i=1; i=2;
}
public void mouseClicked(MouseEvent e){ public void mousePressed(MouseEvent e){ public void mouseEntered(MouseEvent e){ public void mouseExited(MouseEvent e) {
repaint(); repaint();
} }
public void mouseReleased(MouseEvent e) { } }
2. 编写Applet, 当鼠标进入Applet时,通过paint()方法在坐标(20,50)处,显示一幅图像,图像名称为a.gif,显示的高、宽分别为50、80;鼠标移出时,在坐标(70,130)处,显示另一幅图像,图像名称为b.gif,显示的高、宽分别为80、60。这些图像与嵌入该小程序的网页在同一目录下(程
序中用到的图像在计算机中找)。 @程序
import java.awt.*; import java.applet.*; import java.awt.event.*;
public class Applet1 extends Applet implements MouseListener { int i;
Image pic1,pic2; public void init() {
pic1=getImage(getDocumentBase(),\pic2=getImage(getDocumentBase(),\addMouseListener(this);
}
public void paint(Graphics g) {
if(i==1) { if(i==2) {
g.drawImage(pic1,20,50,50,80,this);
} }
g.drawImage(pic2,70,130,80,60,this);
}
}
public void mouseClicked(MouseEvent e) { public void mousePressed(MouseEvent e) { public void mouseEntered(MouseEvent e) { public void mouseExited(MouseEvent e) { public void mouseReleased(MouseEvent e) {
} i=1; i=2; }
repaint(); } repaint(); }
}
3. 编写Applet, 通过paint()方法在鼠标压下时,在坐标(30,30)处显示一幅图像,图像名称为a.gif,显示的高、宽分别为90、90(程序中用到的图像在计算机中找,并使其与嵌入该小程序的网页在同一目录)。点击鼠标时,在窗口的状态栏中输出字符串“这个图像真美丽!”。 @程序
import java.awt.*; import java.applet.*; import java.awt.event.*;
public class Applet1 extends Applet implements MouseListener {
int i;
Image pic;
public void init() {
pic=getImage(getDocumentBase(),\addMouseListener(this);
}
public void paint(Graphics g) {
if(i==1) { g.drawImage(pic,30,30,90,90,this); if(i==2) showStatus(“这个图像真美丽!”);
i=2;
}
}
public void mouseClicked(MouseEvent e) {
repaint(); }
public void mousePressed(MouseEvent e) { public void mouseEntered(MouseEvent e){ public void mouseExited(MouseEvent e){
} }
i=1; repaint(); }
public void mouseReleased(MouseEvent e){ } }
4. 编写Applet, 当压下鼠标时,在鼠标压下处显示字符串“释放鼠标将显示图象”,要求显示字体的名称为\、普通体、字体大小为25。当释放鼠标时,以鼠标释放处为左上角坐标,显示一幅jpg图像,图像显示的宽、高分别为200、120像素(图像在计算机中查找)。 @程序
import java.awt.*;
import java.applet.*; import java.awt.event.*;
public class Applet1 extends Applet implements MouseListener {
int x,y,k; Image pic; public void init() { }
pic=getImage(getDocumentBase(),\addMouseListener(this);
public void paint(Graphics g) {
Font f1=new Font(\g.setFont(f1);
g.drawString(\释放鼠标将显示图象。\g.drawImage(pic,x,y,200,160,this);
}
repaint();
}
}
if(k==1) { }
}
} if(k==2) {
public void mouseClicked(MouseEvent e){ public void mousePressed(MouseEvent e) { k=1; x=e.getX(); y=e.getY(); public void mouseEntered(MouseEvent e){ } public void mouseExited(MouseEvent e){ public void mouseReleased(MouseEvent e) {
k=2;
x=e.getX();
}
y=e.getY(); repaint(); }
5.编写Applet, 当按下键盘键时,在Applet中通过paint()方法,在(25,20)位置处显示你按下的键的名称。 @程序
import java.awt.*; import java .awt .event .*; import java.applet.*;
public class Applet1 extends Applet implements KeyListener
{
String name=\public void init() {
addKeyListener(this);
requestFocus(); }
}
public void paint(Graphics g) { g.drawString (\你按下的键是:\
public void keyPressed(KeyEvent e) {
name=e.getKeyText (e.getKeyCode ());
} }
repaint(); }
}
public void keyReleased(KeyEvent e) { public void keyTyped(KeyEvent e)
{
6.编写小程序,响应键盘事件:敲击字母r,改变小程序背景色为red;敲击字母b,改变小程序背景色为blue;敲击字母g,改变小程序背景色为green;其他字母,改变小程序背景色为black。 // Key.java
import java.applet.Applet; import java.awt.*; import java.awt.event.*;
public class Applet1 extends Applet implements KeyListener {
char ch;
public void init() {
addKeyListener( this ); requestFocus();//获取焦点 }
public void paint( Graphics g ) {
if(ch=='r'|ch=='R')
this.setBackground(Color.red);
}
public void keyPressed( KeyEvent e )//键压下时执行 { }
public void keyReleased( KeyEvent e )//键释放时执行 { }
public void keyTyped( KeyEvent e )////键敲击时执行 { ch=e.getKeyChar(); repaint(); }
}
7.编写java小程序,在小程序界面画一个彩色球,当压下键盘上的4个方向键时,彩色球能向指定
的方向移动。 import java.awt.*; import java.applet.*; import java.awt.event.*;
public class Applet1 extends Applet { char ch; }
int x=20,y=20; public void init() { }
this.addKeyListener(new KeyAdapter() { public void keyPressed(KeyEvent e)
{ }
if(e.getKeyCode()==e.VK_DOWN) y+=2;
if(e.getKeyCode()==e.VK_UP)
y-=2;
if(e.getKeyCode()==e.VK_RIGHT) x+=2; if(e.getKeyCode()==e.VK_LEFT) x-=2; repaint();
});
this.requestFocus();
public void paint(Graphics g) { }
g.setColor(Color.blue); g.fillOval(x,y,30,30);
8.编写小程序,使用内部类响应鼠标点击事件:点击鼠标,以点击处为中心画圆。 import java.awt.*; import java.applet.*; import java.awt.event.*; //点击鼠标,以该点为中心画圆 public class Applet1 extends Applet {
int x,y; public void init() {
addMouseListener(new MyMouse()); }