有分也不能浪费啊! 为什么不自己查javadoc?实现接口java.awt.FocusListener就可以了.

解决方案 »

  1.   

    对不起, 上面写错了. 应该是java.awt.event.FocusListener顺便提一句, 与事件有关的类大部分在java.awt.event包里, 查JComponent没用.FocusListener接口有二个方法: focusGained(FocusEvent e), focusLost(FocusEvent e), 接收一个FocusEvent参数, 用来处理组件获得焦点和失去焦点的行为的.
      

  2.   

    JButton.addFocusListener();
    focusGained(FocusEvent e); // 得到焦点时
    focusLost(FocusEvent e);  // 失去焦点时
               
      

  3.   

    1、java中监听事件使用的是监听器模式,把要监听的组件向监听器注册,当事件发生事,监听器收到信息,调用相应的方法处理。
    楼主所说的组件的监听器就是java.awt.event.FocusListener,负责具体处理事件的方法就是
    focusGained(FocusEvent e), focusLost(FocusEvent e)。2、想重做GUI,有两种方法,一种是继承JButton,自己定义该类的具体实现,第二种就是调用已有的API改变按钮的外观。
      

  4.   

    to zxmzfbdc
    1.我已经大概清楚了,一直不知道有FocusListener啊(汗...)
    2.你能不能说清楚一点呢,比如我要改变点击按钮时的外观,可以重载paintComponent(Graphics g)方法,但获得焦点时的虚线框是在哪里画的呢?
      

  5.   

    java.awt.event.FocusListener改外观package Stockman.SystemFramework;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Style extends Frame{
            JButton java,mac,motif,win;
            public Style(){
                    super("Toolbar Example(Sqing)");
                    setSize(450,250);
                    JPanel lnfPanel=new JPanel();
                    lnfPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
                    LnFListener lnfListener=new LnFListener(this);
                    mac=new JButton("Mac");
                    mac.addActionListener(lnfListener);
                    java=new JButton("Metal");
                    java.addActionListener(lnfListener);
                    motif=new JButton("Motif");
                    motif.addActionListener(lnfListener);
                    win=new JButton("Windows");
                    win.addActionListener(lnfListener);
                    lnfPanel.add(mac);
                    lnfPanel.add(java);
                    lnfPanel.add(motif);
                    lnfPanel.add(win);
                    add(lnfPanel,BorderLayout.SOUTH);
            }
            public static void main(String args[]){
                    Style style=new Style();
                    style.setVisible(true);
            }
    }
    class LnFListener implements ActionListener{
            Frame frame;
            public LnFListener(Frame f){
                    frame=f;
            }
            public void actionPerformed(ActionEvent e){
                    String lnfName=null;
                    if(e.getActionCommand().equals("Mac")){
                            lnfName="com.apple.mrj.swing.MacLookAndFeel";
                    }
                    else if(e.getActionCommand().equals("Metal")){
                            lnfName="javax.swing.plaf.metal.MetalLookAndFeel";
                    }
                    else if(e.getActionCommand().equals("Motif")){
                            lnfName="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
                    }
                    else if(e.getActionCommand().equals("Windows")){
                            lnfName="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
                    }
                    else{
                            System.err.println("Unreconized L&F request action:"+e.getActionCommand());
                            return;
                    }
                    try{
                            UIManager.setLookAndFeel(lnfName);
                            SwingUtilities.updateComponentTreeUI(frame);
                    }
                    catch(UnsupportedLookAndFeelException ex1){
                            System.err.println("Unsupported LookAndFeel:"+lnfName);
                    }
                    catch(ClassNotFoundException ex2){
                            System.err.println("LookAndFeel class not found:"+lnfName);
                    }
                    catch(InstantiationException ex3){
                            System.err.println("Could not load LookAndFeel:"+lnfName);
                    }
                    catch(IllegalAccessException ex4){
                            System.err.println("Cannot use LookAndFeel:"+lnfName);
                    }
            }
    }
      

  6.   

    zxmzfbdc(也速该把阿秃儿) 楼上说的不错!不过楼主你要是想知道更深的话,那你就必须去看jdk!
    因为光靠说是说不明白的!你只要在jdk中去找FocusListener就可以了!
      

  7.   

    算了,结帖了,尤其感谢Dan1980