swing the paint 问题

cs221313
swing the paint 问题

Hi, all,

我写了下面的代码. 不过下面的paint函数只响应resize的消息而不响应get active 的消息. 不知谁能帮我一把. 万分感谢.

import javax.swing.*;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Color;

/**
* @author
*
*/
public class StateMachine extends JFrame
{
        private int zoomFactor = 1;
        private final int GRID_WIDTH = 20;

        public StateMachine()
        {
                super("Sate Machine");
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setMenu();
                pack();
                setVisible(true);
        }

        public void paint(Graphics g)
        {
                super.paint(g);
                g.setColor(Color.GRAY);
                Dimension dimension = getSize();

                //Draw column
                for(int i = 0; i < dimension.getWidth(); i += (GRID_WIDTH * zoomFactor))
                {
                        g.drawLine(i, 0, i, (int)dimension.getHeight());
                }
                //Draw row
                for(int j = 0; j < dimension.getHeight(); j += (GRID_WIDTH * zoomFactor))
                {
                        g.drawLine(0, j, (int)dimension.getWidth(), j);
                }

        }

/*        public void update(Graphics g)
        {
                super.update(g);
                paint(g);
        }*/

        private void setMenu()
        {
                JMenuBar menuBar = new JMenuBar();

                JMenu fileMenu = new JMenu("File");
               
                JMenuItem menuOpen = new JMenuItem("Open");
                menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
                JMenuItem menuSave = new JMenuItem("Save");
                menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
                JMenuItem menuClose = new JMenuItem("Close");
                menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
               
                fileMenu.add(menuOpen);
                fileMenu.addSeparator();
                fileMenu.add(menuSave);
                fileMenu.addSeparator();
                fileMenu.add(menuClose);

                menuBar.add(fileMenu);

                setJMenuBar(menuBar);
        }

        /**
         * @param args
         */
        public static void main(String[] args)
        {
                // TODO Auto-generated method stub
                new StateMachine();

                return;
        }

}