当前位置: 代码迷 >> Java Web开发 >> java GUI程序!不明全部作用,求各部分解释,谢谢!
  详细解决方案

java GUI程序!不明全部作用,求各部分解释,谢谢!

热度:462   发布时间:2011-10-21 22:07:01.0
java GUI程序!不明全部作用,求各部分解释,谢谢!
import java.awt.*;
import java.awt.event.*;


class Display
{
    public static final int
    EVENT = 0,COMPONENT = 1,MOUSE = 2,MOUSE_MOVE = 3,
    FOCUS = 4,KEY = 5,ACTION = 6,LAST = 7;
    public String[] evnt;
    Display()
    {
        evnt = new String[LAST];
        for(int i = 0; i < LAST; i++)
        {
            evnt[i] = new String();
        }
    }
    public void show(Graphics g)
    {
        for(int i = 0; i < LAST; i++)
        {
            g.drawString(evnt[i], 0, 10*i+10);
        }
    }
}


class EnablePanel extends Panel
{
    Color c;
    int id;
    Display display = new Display();
    public EnablePanel(int i,Color mc)
    {
        id = i;
        c = mc;
        setLayout(new BorderLayout());
        add(new MyButton(),BorderLayout.SOUTH);
        addComponentListener(new CL());
        addFocusListener(new FL());
        addKeyListener(new KL());
        addMouseListener(new ML());
        addMouseMotionListener(new MML());
    }
    public void update(Graphics g)
    {
        paint(g);
    }
    public void paint(Graphics g)
    {
        g.setColor(c);
        Dimension s = getSize();
        g.fillRect(0, 0, s.width, s.height);
        g.setColor(Color.black);
        display.show(g);
    }
    public void processEvent(AWTEvent e)
    {
        display.evnt[Display.COMPONENT] = "component moved";
        repaint();
    }
    class CL implements ComponentListener
    {
        public void componentMoved(ComponentEvent e)
        {
            display.evnt[Display.COMPONENT] = "component moved";
            repaint();
        }
        public void componentResized(ComponentEvent e)
        {
            display.evnt[Display.COMPONENT] = "component resized";
            repaint();
        }
        public void componentHidden(ComponentEvent e)
        {
            display.evnt[Display.COMPONENT] = "component hidden";
            repaint();
        }
        public void componentShown(ComponentEvent e)
        {
            display.evnt[Display.COMPONENT] = "component shown";
            repaint();
        }
    }
    class FL implements FocusListener
    {
        public void focusGained(FocusEvent e)
        {
            display.evnt[Display.FOCUS] = "focus gained";
            repaint();
        }
        public void focusLost(FocusEvent e)
        {
            display.evnt[Display.FOCUS] = " focus lost";
            repaint();
        }
    }
    class KL implements KeyListener
    {
        public void keyPressed(KeyEvent e)
        {
            display.evnt[Display.KEY] = "key pressed";
            showCode(e);
        }
        public void keyReleased(KeyEvent e)
        {
            display.evnt[Display.KEY] = "key released";
            showCode(e);
        }
        public void keyTyped(KeyEvent e)
        {
            display.evnt[Display.KEY] = "key typed:";
            showCode(e);
        }
        void showCode(KeyEvent e)
        {
            int code = e.getKeyCode();
            display.evnt[Display.KEY] += KeyEvent.getKeyText(code);
            repaint();
        }
    }
    class ML implements MouseListener
    {
        public void mouseClicked(MouseEvent e)
        {
            requestFocus();
            display.evnt[Display.MOUSE] = "mouse clicked";
            showMouse(e);
        }
        public void mousePressed(MouseEvent e)
        {
            display.evnt[Display.MOUSE] = "mouse pressed";
            showMouse(e);
        }
        public void mouseReleased(MouseEvent e)
        {
            display.evnt[Display.MOUSE] = "mouse released";
            showMouse(e);
        }
        public void mouseEntered(MouseEvent e)
        {
            display.evnt[Display.MOUSE] = "mouse entered";
            showMouse(e);
        }
        public void mouseExited(MouseEvent e)
        {
            display.evnt[Display.MOUSE] = "mouse exit";
            showMouse(e);
        }
        void showMouse(MouseEvent e)
        {
            display.evnt[Display.MOUSE] +=
                    ", x = " + e.getX() +", y =" +e.getY();
            repaint();
        }
    }
    class MML implements MouseMotionListener
    {
        public void mouseDragged(MouseEvent e)
        {
            display.evnt[Display.MOUSE_MOVE] = "mouse dragged";
            showMouse(e);
        }
        public void mouseMoved(MouseEvent e)
        {
            display.evnt[Display.MOUSE_MOVE] = "mouse moved";
            showMouse(e);
        }
        void showMouse(MouseEvent e)
        {
            display.evnt[Display.MOUSE_MOVE] +=
                    ",x = "+e.getX()+
                    ",y = "+e.getY();
            repaint();
        }
    }
}
class MyButton extends Button
{
    int clickCounter;
    String label = "";
    public MyButton()
    {
        addActionListener(new AL())    ;
    }
    public void paint(Graphics g)
    {
        g.setColor(Color.green);
        Dimension s = getSize();
        g.fillRect(0, 0, s.width, s.height);
        g.setColor(Color.black);
        g.drawRect(0, 0, s.width - 1, s.height - 1);
        drawLabel(g);
    }
    private void drawLabel(Graphics g)
    {
        FontMetrics fm = g.getFontMetrics();
        int width = fm.stringWidth(label);
        int height = fm.getHeight();
        int ascent = fm.getAscent();
        int leading = fm.getLeading();
        int horizMargin = (getSize().width - width)/2;
        int verMargin = (getSize().height - height)/2;
        g.setColor(Color.red);
        g.drawString(label, horizMargin, verMargin+ascent+leading);
    }
    class AL implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            clickCounter++;
            label = "clice #"+clickCounter+" "+e.toString();
            repaint();
        }
    }
}
public class Hello extends Frame
{
    Hello()
    {
        setLayout(new GridLayout(2,2));
        add(new EnablePanel(1,Color.cyan));
        add(new EnablePanel(2,Color.lightGray));
        add(new EnablePanel(3,Color.yellow));
    }
    public static void main(String[] args)
    {
        Frame f = new Hello();
        f.setTitle("good technique");
        f.addWindowListener(new WindowAdapter()
        {
            public void windowClosing(WindowEvent e)
            {
                System.out.println(e);
                System.out.println("window closing");
                System.exit(0);
            }
        });
        f.setSize(700,700);
        f.setVisible(true);
    }
}






搜索更多相关主题的帖子: java  public  import  class  

----------------解决方案--------------------------------------------------------
各种事件、隐藏显示,好歹说清楚哪句不明白啊?
----------------解决方案--------------------------------------------------------

----------------解决方案--------------------------------------------------------
  相关解决方案