问答题

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

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

问答题
本题的功能是对下拉菜单项的操作,包括添加和删除。页面包括一个下拉菜单、一个文本框和两个按钮“删除”和“添加”,选中下拉菜单的一项后,可以通过“删除”按钮从下拉菜单中删除该项,在文本框中填入字符串后,单击“添加”按钮就可以将该项添加到下拉菜单中,所有信息都将显示在右侧的文本域中。 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 ()); } } }