frame.show();  -->  frame.setVisible(true);

解决方案 »

  1.   

    frame.show();-->frame.setVisible(true)
    还是不行
      

  2.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.awt.geom.*;
    import java.util.*;
    public class KeyGame {
        public static void main(String[] ags) {
            KeyGameFrame frame = new KeyGameFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    }
    class KeyGameFrame extends JFrame {
        public static final int WIDTH = 350;    public static final int HEIGHT = 400;    public KeyGameFrame() {
            setTitle("KeyGame");
            setSize(WIDTH, HEIGHT);
            getContentPane().add(new KeyPanel());
        }
    }
    class KeyPanel extends JPanel {
        public static final int INCREASEMENT = 2;    private Point2D last;    private ArrayList lines = new ArrayList();    public KeyPanel() {
            last = new Point2D.Double(100, 100);
            addKeyListener(new KeyHandler());
            setFocusable(true);    //做faq的时候题目:JPanel的key事件监听
        }    public void paintComponent(Graphics g) {   //去掉s
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
            for (int i = 0; i < lines.size(); i++) {
                g2.draw((Line2D.Double) lines.get(i));
            }
        }    public void add(int increase_x, int increase_y) {
            Point2D.Double end = new Point2D.Double(last.getX() + increase_x,
                                                    last.getY() + increase_y);        Line2D.Double line = new Line2D.Double(last, end);
            lines.add(line);
            repaint();        last = end;
        }    private class KeyHandler extends KeyAdapter {
            public void keyPressed(KeyEvent event) {
                int keyCode = event.getKeyCode();
                int d = INCREASEMENT;
                if (keyCode == event.VK_LEFT) {
                    add(-d, 0);
                } else if (keyCode == event.VK_RIGHT) {
                    add(d, 0);
                } else if (keyCode == event.VK_UP) {
                    add(0, -d);     //分清上下
                } else if (keyCode == event.VK_DOWN) {
                    add(0, d);
                }
            }
        }
    }