第 1 页:选择题 |
第 3 页:基本操作题 |
第 4 页:简单应用题 |
第 5 页:综合应用题 |
综合应用题
43本题的功能是定义自已的组件类。窗口中排布着12个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击 按钮时,后台将显示该按钮对应的字符。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
class java3 extends Frame{
String keys="l23456789*0#";
java3(){
super("java3");
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(O);
}
});
setLayout(new GridLayout(4,3,6,6));
for(int i=0;i
KeyButton kb=new KeyButton(keys.charAt
(i));
kb.addkeyListener(this);
kb.setBackground(Color.pink);
kb.setForeground(Color.black);
add(kb);
}
setSize(200,200);
show();
}
class KeyEventHandler extends KeyAdapter{
public void keyTyPed(KeyEvent evt){
System.out.println(evt.getChar());
}
}
public static void main(String[]args){
newjava3();
}
}
class KeyButton extends Component{
KeyListener keyListener;
boolean highlighted;
char key;
KeyButton(char k){
this.key=k;
addMouseListener(new MouseEventHandler()):
}
public void paint(Graphics g){
int W=getSize().width;
int h=getSize().height;
String s=""+key;
FontMetrics fm=g.getFontMetrics();
if(highlighted){
g.setColor(getBackground());
g.fillRoundRect(0,0,w-1,h-1,10,10);
}
g.setColor(getForeground());
g.drawRoundRect(0,0,w-1,h-1,10,10);
g.drawString(s,(w-fm.stringWidth(s))/2,
(h-fm.getHeight())/2+fm.getAscent());
}
class MouseEventHandler extends MouseAdapter{
public void mousePressed(MouseEvent evt){
if(keyListener!=null){
keyListener.keyTyped(
new KeyEvent(KeyButton.this,KeyEvent.KEY_
TYPED,
System.currentTimeMillis(),
0,KeyEvent.VK_UNDEFINED,key));
}
}
public void mouseEntered(MouseEvent evt){
highlighted=true;
repaint();
}
public void mouseExited(MouseEvent evt){
highlighted=false;
repaint();
}
}
public synchronized void addKeyListerner(KeyLis-
tener l){
keyListener=AWTEventMuhieaster.add(key-
Listener,1);
}
public synchronized void removeKeyListener(Key-
Listener l){
keyListener=AWTEventMuhicaster.remove
(keyListener,1);
}
}
参考解析:
第1处:int i=0;i
第2处:kb.addKeyListener(new KeyEventHandler())
第3处:system.out.println(evt.getKeyChar())
【解析】第1处是作为遍历keys中元素的条件,而keys中的字符元素就是各个按钮对应的字符。第2处注册键盘事件监听功能,KeyButton实现了KeyLIstener接口,而kb是KeyButton类的对象,所以它是合格的监听者。第3处将从键盘读到的字符输出。
相关推荐:
北京 | 天津 | 上海 | 江苏 | 山东 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
广东 | 河北 | 湖南 | 广西 | 河南 |
海南 | 湖北 | 四川 | 重庆 | 云南 |
贵州 | 西藏 | 新疆 | 陕西 | 山西 |
宁夏 | 甘肃 | 青海 | 辽宁 | 吉林 |
黑龙江 | 内蒙古 |