Java 我有一个问题,绘画(图形g)的方法在桨移动到左边或右边
我有一个左右移动的问题,这是代码。 重绘方法也不能正常工作。我已经多次修改了代码,但没有白费 我现在不想使用PaintComponent。 我想知道代码中的确切问题是什么。 谢谢你的帮助Java 我有一个问题,绘画(图形g)的方法在桨移动到左边或右边,java,Java,我有一个左右移动的问题,这是代码。 重绘方法也不能正常工作。我已经多次修改了代码,但没有白费 我现在不想使用PaintComponent。 我想知道代码中的确切问题是什么。 谢谢你的帮助 package com.zharawa; public class Main { public static void main(String[] args) { new GameFrame("SnakeGame", 800, 700); } public class
package com.zharawa;
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
公共班机{
公共静态void main(字符串[]args){
新游戏框架(“破砖者”,800700);
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
package com.zharawa;
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
导入java.awt.Color;
导入java.awt.Graphics;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
导入javax.swing.JPanel;
导入javax.swing.Timer;
公共类GamePanel扩展JPanel实现KeyListener、ActionListener{
私有int-xdir=350;
私人int-PAYDIR=600;
私有宽度=150;
私家车高度=10;
公共游戏小组(){
addKeyListener(此);
设置聚焦(真);
setFocusTraversalKeysEnabled(false);
重新油漆();
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
公共空间绘制(图形g){
//划界
g、 setColor(Color.blue);
g、 fillRect(0,0785,5);
g、 fillRect(0,5,5655);
g、 fillRect(780,5,5655);
g、 setColor(Color.red);
g、 fillRect(5655775,5);
//抽签
g、 setColor(Color.green);
g、 圆形(300、450、20、20);
//画砖
//g.setColor(颜色为蓝色);
//对于(inti=0;i我将paint(Graphics g)方法更改为painting或其他名称,但所有图形都消失了。
问题在于划桨,当尝试移动它的方向时,它有一种奇怪的行为。我将绘画(Graphics g)方法更改为绘画或其他名称,但所有的图形都消失了。
问题在于划桨,它在尝试移动方向时有一种奇怪的行为。我想你没有理解camickr的评论。你需要将方法paint
的名称更改为paintComponent
。你还需要调用超类方法。你还需要添加对方法repaint()的调用
在您的按键()方法中
我对您的GamePanel
类进行了必要的更改。我还添加了一个main()
方法,使下面的代码成为您可以运行的应用程序。您可以从下面的代码中安全地删除main()
方法
package com.zharawa;
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
导入java.awt.Color;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.WindowConstants;
公共类GamePanel扩展JPanel实现KeyListener、ActionListener{
私有int-xdir=350;
私人int-PAYDIR=600;
私有宽度=150;
私家车高度=10;
公共游戏小组(){
addKeyListener(此);
设置聚焦(真);
setFocusTraversalKeysEnabled(false);
重新油漆();
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paintComponent(图形g){//更改方法名称(从“paint”开始)
super.paintComponent(g);//添加了此行
//划界
g、 setColor(Color.blue);
g、 fillRect(0,0785,5);
g、 fillRect(0,5,5655);
g、 fillRect(780,5,5655);
g、 setColor(Color.red);
g、 fillRect(5655775,5);
//抽签
g、 setColor(Color.green);
g、 圆形(300、450、20、20);
//画砖
//g.setColor(颜色为蓝色);
//对于(int i=0;i{
JFrame=新JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
框架设置尺寸(800700);
frame.add(新游戏面板());
frame.setLocationByPlatform(真);
frame.setVisible(true);
});
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
添加动画(即制作“球”)时,需要使用actionPerformed()
方法在屏幕上移动。为了添加动画,您需要使用一个我想您不理解camickr的评论。您需要将方法paint
的名称更改为paintComponent
。您还需要调用超类方法。您还需要添加对方法repaint()的调用
在您的按键()方法中
我对您的GamePanel
类进行了必要的更改。我还添加了一个main()
方法,使下面的代码成为您可以运行的应用程序。您可以从下面的代码中安全地删除main()
方法
package com.zharawa;
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
public class Main {
public static void main(String[] args) {
new GameFrame("SnakeGame", 800, 700);
}
导入java.awt.Color;
导入java.awt.EventQueue;
导入java.awt.Graphics;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.awt.event.KeyEvent;
导入java.awt.event.KeyListener;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入javax.swing.WindowConstants;
公共类GamePanel扩展JPanel实现KeyListener、ActionListener{
私有int-xdir=350;
私人int-PAYDIR=600;
私有宽度=150;
私家车高度=10;
公共游戏小组(){
addKeyListener(此);
设置聚焦(真);
setFocusTraversalKeysEnabled(false);
重新油漆();
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paint(Graphics g) {
super.paint(g);
//draw borders
g.setColor(Color.blue);
g.fillRect(0, 0, 785, 5);
g.fillRect(0, 5, 5, 655);
g.fillRect(780, 5, 5, 655);
g.setColor(Color.red);
g.fillRect(5, 655, 775, 5);
//draw ball
g.setColor(Color.green);
g.fillOval(300, 450, 20, 20);
//draw bricks
// g.setColor(Color.blue);
// for(int i=0;i<20;i++) {
// g.fillRect(50, 50, 30, 30);
//}
//draw paddle
g.setColor(Color.green);
g.fillRect(paddleXdir, paddleYdir, paddleWidth, paddleHeight);
}
@Override
public void actionPerformed(ActionEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
paddleXdir+=25;
if(e.getKeyCode()==KeyEvent.VK_LEFT)
paddleXdir-=25;
repaint();
}
@Override
public void keyReleased(KeyEvent e) {
}
}
public void paintComponent(图形g){//更改方法名称(从“paint”开始)
super.paintComponent(g);//添加了此行
//划界
g、 setColor(Color.blue);
g、 fillRect(0,0785,5);
g、 fillRect(0,5,5655);
g、 fillRect(780,5,5655);
g、 setColor(Color.red);
g、 fillRect(5655775,5);
//抽签
g、