java问题求解,急用!
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package tanke1;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Tanke1 extends JFrame {//设置按钮
static JButton kaishi=new JButton("开始");
static JButton shezhi=new JButton("设置");
static JButton bangzhu=new JButton("帮助");
static JButton guanyu =new JButton("关于");
static JButton tuichu=new JButton("退出");
static Tanke1 f=new Tanke1();
public static void main(String[] args) {//设置开始页面
f.setTitle("坦克大战");
f.setLayout(null);
f.setSize(800, 526);
f.setLocation(300,100);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
kaishi.setFont(new Font("宋体",50,30));
kaishi.setBounds(130, 100, 100, 50);
shezhi.setFont(new Font("宋体",50,30));
shezhi.setBounds(130, 170, 100, 50);
bangzhu.setFont(new Font("宋体",50,30));
bangzhu.setBounds(130,240,100,50);
guanyu.setFont(new Font("宋体",50,30));
guanyu.setBounds(130,310,100,50);
tuichu.setFont(new Font("宋体",50,30));
tuichu.setBounds(130,380, 100, 50);
f.add(kaishi);
f.add(shezhi);
f.add(bangzhu);
f.add(guanyu);
f.add(tuichu);
kaishi.addMouseListener(new Mykaishi());
shezhi.addMouseListener(new Myshezhi());
bangzhu.addMouseListener(new Mybangzhu());
guanyu.addMouseListener(new Myguanyu());
tuichu.addMouseListener(new Mytuichu());
}
@Override
public void paint(Graphics g){//导入开始页面背景图片
BufferedImage image=null;
try {
image =ImageIO.read(new File("D:/java/Tanke/src/tanke/kaishi.JPG"));
} catch (IOException ex) {
Logger.getLogger(Tanke1.class.getName()).log(Level.SEVERE, null, ex);
}
g.drawImage(image, 0, 0, this);
g.setColor(Color.BLACK);
g.setFont(new Font("宋体",50,50));
g.drawString("坦克大战", 90, 100);
}
static class Mykaishi implements MouseListener{//设置开始按钮响应
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
Game jf=new Game();
jf.game(jf);
f.setVisible(false);
}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
static class Myshezhi implements MouseListener{//设置设置按钮响应
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
JOptionPane.showMessageDialog(shezhi, "Sorry!技术有限无法导入背景音乐!");}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
static class Mybangzhu implements MouseListener{//设置帮助按钮响应
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
JOptionPane.showMessageDialog(bangzhu, "上:W 下:S 左:A 右:D 子弹:Enter");
}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
static class Myguanyu implements MouseListener{//设置关于按钮响应
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
JOptionPane.showMessageDialog(guanyu,"本游戏由长大软工1202班董进编写");
}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
static class Mytuichu implements MouseListener{//设置退出按钮响应
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
System.exit(0);
}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
}
class Game extends JFrame{//创建游戏页面
static int x=0,y=0;
public Game(){
setTitle("坦克大战");
setSize(800,526);
setLayout(null);
setLocation(300,100);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
@Override
public void paint(Graphics g){//导入游戏背景图片
BufferedImage pic=null;
try {
pic=ImageIO.read(new File("D:/java/Tanke/src/tanke/beijing.JPG"));
} catch (IOException ex) {
Logger.getLogger(Game.class.getName()).log(Level.SEVERE, null, ex);
}
g.drawImage(pic, 0, 0, this);
}
public void game(JFrame j){//制作坦克(坦克为按钮)
JPanel pan=new JPanel();
ImageIcon icw=new ImageIcon("D:/java/Tanke/src/tanke/tanke7上.jpg");
JButton btw=new JButton(icw);
j.setLayout(null);
btw.addKeyListener(new MyKeyListener());
btw.setBounds(500, 300, 30, 36);
btw.setVisible(true);
pan.add(btw);
pan.setLayout(null);
pan.setVisible(true);
j.add(pan);
j.setVisible(true);
}
static class MyKeyListener implements KeyListener{//实现坦克移动
@Override
public void keyTyped(KeyEvent e) {}
@Override
public void keyPressed(KeyEvent e) {
JButton but=(JButton)e.getSource();
x=but.getLocation().x;
y=but.getLocation().y;
if(e.getKeyCode()==KeyEvent.VK_W)
{
y=y-5;
if(y<=0)y=0;
}
else if(e.getKeyCode()==KeyEvent.VK_S)
{
y=y+5;
if(y>=460)y=460;
}
else if(e.getKeyCode()==KeyEvent.VK_S)
{
y=y+5;
if(y>=460)y=460;
} else if(e.getKeyCode()==KeyEvent.VK_A)
{
x=x-5;
if(x<=0)x=0;
} else if(e.getKeyCode()==KeyEvent.VK_D)
{
x=x+5;
if(x>=765)x=765;
}
System.out.println("x="+x+" "+"y="+y);
but.setLocation(x,y);
}
@Override
public void keyReleased(KeyEvent e) {}
}
}
这是我写的第一个游戏坦克大战,到遇到的问题让我很头疼,想了几天也没结果,一个问题是开始页面和游戏页面背景和图片不能同时出现,刷新后才能出现,还有坦克不能出现!还有就是坦克移动时会擦去背景!移动时不能转方向!望大神指点,详细一点!感激不尽!!!