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;
}
}