问答题

本题的功能是定义自已的组件类。窗口中排布着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<keyslength;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(ne......

(↓↓↓ 点击下方‘点击查看答案’看完整答案、解析 ↓↓↓)

相关考题

判断题 分层营销是现代营销最基本的方法。

单项选择题 用于从其他数据库导人和导出数据的宏命令是(  )。

判断题 个人贷款的借贷双方所承担的利率风险完全对称。

判断题 课外活动的内容受课程计划、课程标准的限制。()

判断题 学校德育具有承接历史的继承性与超越地域的全球性特征。()

问答题 本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按钮“删除”和“添加”,选中下拉菜单的一项后,可以通过“删除”按钮从下拉菜单中删除该项,在文本框中填入字符串后,单击“添加”按钮就可以将该项添加到下拉菜单中,所有信息都将显示在右侧的文本域中。 import java.awt.*; import java.awt.event.*; public class java2 extends java.applet.Applet imple- ments hemListener,ActionListener {Choice choice; TextField text; TextArea area; Button add,del; public void init() . {choice:new Choice(); text=new TextField(8); area:new TextArea(6,15); choice.add("音乐天地"); choice.add("武术天地"); choice.add("象棋乐园"); choice.add("交友聊天"); add=new Button("添加"); del=new Button("删除"); add.addActionListener(this); del.addActionListener(this); choice.addItemListener(this); add(choice); add(del);add(text);add(add);add(area); } public void itemStateChanged(hemEvent e) {String name= ; int index=choice.getSelectedIndex(); area.setText("\n"+index+":"+name); } public void actionPerformed(ActionEvent e) {if(e.getSource()= =add||e.getSource()= = text) {String name=text.getText(); if(name.length()>0) {choice.add(name); choice.select(name); area.append("\n添加"+name); } } else if(e.getSource()= =del) {choice.remove( ); area.append("\n删除"+choice.getSelectedItem ()); } } }

判断题 制定和实施货币政策,首先必须明确货币政策最终要达到的目的。 ( )

判断题 融资类信托业务包括信托贷款、附有回购(及回购选择权)或担保安排的股权融资类信托、信贷资产受让信托等。( )

判断题 个人理财从业人员对客户投资情况评估和分析时,应包含相应的风险揭示内容。()

判断题 幼儿口吃的心理原因不包括说话时过于急躁、激动。()