package com.sanxia.javabase.chap8.swing; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Toolkit; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JPanel; public class SnakeGame { public static void main(String[] args) { JFrame jf = new JFrame(); SnakeGame sg = new SnakeGame(); sg.init(jf, 800, 600); final SnakePanel sp = new SnakePanel(); jf.add(sp); jf.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { int keyCode = e.getKeyCode(); System.out.println("keyCode="+keyCode); switch (keyCode) { case KeyEvent.VK_LEFT: sp.x-=3; break; case KeyEvent.VK_RIGHT: sp.x+=3; break; case KeyEvent.VK_UP: sp.y-=3; break; case KeyEvent.VK_DOWN: sp.y+=3; break; default: break; } sp.repaint(); } }); } public void init(JFrame frame,int formWidth,int formHeight){ //设置当前窗体可见,默认不可见 frame.setVisible(true); //int formWidth = 300; //int formHeight = 200; //设置当前窗体的宽和高 frame.setSize(formWidth, formHeight); frame.setTitle("我的贪食蛇...."); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); //通过Dimension类的对象dim可以获取到屏幕的宽和高 int screenWidth = dim.width; int screenHeight = dim.height; System.out.println("当前屏幕的分辨率为:"+screenWidth+"*"+screenHeight); int x = (screenWidth-formWidth)/2; int y = (screenHeight-formHeight)/2;; //设置当前窗体出现在窗口中坐标位置,即x轴的坐标值和y轴的坐标值 frame.setLocation(x, y); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } class SnakePanel extends JPanel{ private static final long serialVersionUID = 1L; int x = 120; int y = 50; @Override public void paint(Graphics g) { super.paint(g);//抹去运动轨迹 g.setColor(Color.RED); Font font = new Font("隶书", Font.BOLD, 30); g.setFont(font); g.drawString("哈哈哈,大家下午好啊,打起精神哦!", 30, 50); g.setColor(Color.BLUE); //空心圆 g.drawOval(60, 50, 30, 30); //实心圆 g.fillOval(x, y, 30, 30); } }