java运行时,提示需要'' class '' 或'' interface ‘’
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运行时,提示需要'' class '' 或'' interface ‘’相关的知识,希望对你有一定的参考价值。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.EventListener;
public class tank extends JApplet
public static void main(String s[])
JFrame frame=new JFrame();
frame.setTitle("tank");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new tank();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
public void init()
JPanel panel = new tankPanel();
getContentPane().add(panel);
class tankPanel extends JPanel implements Runnable
public tankPanel()
setPreferredSize(new Dimension(640,480));
setBackground(Color.white);
Thread thread = new Thread(this);
thread.start();
//重写组件绘制方法
public void paintComponent(Graphics g)
//坦克初始位置
int x = 280, y = 280 ;
int tankbullet = 8 ;//坦克的子弹速度
//子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
this.setBackground(Color.WHITE) ;
g.setColor(Color.red) ;
g.fillRect(280 , 280 , 40 , 40) ;
g.fillOval(275 , 275 , 10 , 10) ;
g.fillOval(275 , 285 , 10 , 10) ;
g.fillOval(275 , 295 , 10 , 10) ;
g.fillOval(275 , 305 , 10 , 10) ;
g.fillOval(275 , 315 , 10 , 10) ;
g.fillOval(315 , 275 , 10 , 10) ;
g.fillOval(315 , 285 , 10 , 10) ;
g.fillOval(315 , 295 , 10 , 10) ;
g.fillOval(315 , 305 , 10 , 10) ;
g.fillOval(315 , 315 , 10 , 10) ;
g.setColor(Color.black) ;
g.fillRect(295 , 260 , 10 , 40) ;
g.fillOval(285 , 310 , 10 , 10) ;
g.fillOval(305 , 310 , 10 , 10) ;
public void run()
for (int a = 0; a<60000; a++)
dy1 = dy1 - tankbullet ;
dx2 = dx2 + tankbullet ;
dy3 = dy3 + tankbullet ;
dx4 = dx4 - tankbullet ;
程序现在没问题了,编译没问题,但是运行的时候,什么也看不见了,是怎么回事?
首先你最后多了大括号,当JVM解析到倒数第二个大括号后就认为已经是最后了,而又多了个大括号,那就需要class或interface了。
再一个就是dy1、 dx2、dy3、dx4 、tankbullet都是局部变量,在run方法中是看不到的,这里也是错误
需要将
int tankbullet = 8 ;//坦克的子弹速度
//子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
这一段放到
class tankPanel extends JPanel implements Runnable
这个后面
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.EventListener;
public class tank extends JApplet
public static void main(String s[])
JFrame frame=new JFrame();
frame.setTitle("tank");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new tank();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
public void init()
JPanel panel = new tankPanel();
getContentPane().add(panel);
class tankPanel extends JPanel implements Runnable
int tankbullet = 8 ;// 坦克的子弹速度
// 子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
public tankPanel()
setPreferredSize(new Dimension(640,480));
setBackground(Color.white);
Thread thread = new Thread(this);
thread.start();
// 重写组件绘制方法
public void paintComponent(Graphics g)
// 坦克初始位置
int x = 280, y = 280 ;
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
this.setBackground(Color.WHITE) ;
g.setColor(Color.red) ;
g.fillRect(280 , 280 , 40 , 40) ;
g.fillOval(275 , 275 , 10 , 10) ;
g.fillOval(275 , 285 , 10 , 10) ;
g.fillOval(275 , 295 , 10 , 10) ;
g.fillOval(275 , 305 , 10 , 10) ;
g.fillOval(275 , 315 , 10 , 10) ;
g.fillOval(315 , 275 , 10 , 10) ;
g.fillOval(315 , 285 , 10 , 10) ;
g.fillOval(315 , 295 , 10 , 10) ;
g.fillOval(315 , 305 , 10 , 10) ;
g.fillOval(315 , 315 , 10 , 10) ;
g.setColor(Color.black) ;
g.fillRect(295 , 260 , 10 , 40) ;
g.fillOval(285 , 310 , 10 , 10) ;
g.fillOval(305 , 310 , 10 , 10) ;
public void run()
for (int a = 0; a<60000; a++)
dy1 = dy1 - tankbullet ;
dx2 = dx2 + tankbullet ;
dy3 = dy3 + tankbullet ;
dx4 = dx4 - tankbullet ;
运行后界面是
至于为什么没出现子弹,是因为你在run方法中修改了
dy1 = dy1 - tankbullet ;
dx2 = dx2 + tankbullet ;
dy3 = dy3 + tankbullet ;
dx4 = dx4 - tankbullet ;
这几个值,而并没有利用这几个值进行重新绘制子弹,所以导致无法出现子弹
参考技术A 给你看过了, 最后一行的括号去掉一个就可以了还有个小提示, 类名应该首字母大写, 谢谢 参考技术B //坦克初始位置
int x = 280, y = 280 ;
int tankbullet = 8 ;//坦克的子弹速度
//子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
这段代码应该移到class tankPanel extends JPanel implements Runnable下面全局变量】、
最后一行的去掉 参考技术C
你这个程序写的有问题,下面这段变量会提示报错
dy1 = dy1 - tankbullet ;
dx2 = dx2 + tankbullet ;
dy3 = dy3 + tankbullet ;
dx4 = dx4 - tankbullet ;
我帮你稍微改了下:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.EventListener;
public class tank extends JApplet
public static void main(String s[])
JFrame frame=new JFrame();
frame.setTitle("tank");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JApplet applet = new tank();
applet.init();
frame.getContentPane().add(applet);
frame.pack();
frame.setVisible(true);
public void init()
JPanel panel = new tankPanel();
getContentPane().add(panel);
class tankPanel extends JPanel implements Runnable
int x = 280, y = 280 ;
int tankbullet = 8 ;//坦克的子弹速度
//子弹
int dx = 295 , dy = 295 ;
int dx1 = 295 , dy1 = -10 ;
int dx2 = 600 , dy2 = 295 ;
int dx3 = 295 , dy3 = 600 ;
int dx4 = -10 , dy4 = 295 ;
public tankPanel()
setPreferredSize(new Dimension(640,480));
setBackground(Color.white);
Thread thread = new Thread(this);
thread.start();
//重写组件绘制方法
public void paintComponent(Graphics g)
//坦克初始位置
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
this.setBackground(Color.WHITE) ;
g.setColor(Color.red) ;
g.fillRect(280 , 280 , 40 , 40) ;
g.fillOval(275 , 275 , 10 , 10) ;
g.fillOval(275 , 285 , 10 , 10) ;
g.fillOval(275 , 295 , 10 , 10) ;
g.fillOval(275 , 305 , 10 , 10) ;
g.fillOval(275 , 315 , 10 , 10) ;
g.fillOval(315 , 275 , 10 , 10) ;
g.fillOval(315 , 285 , 10 , 10) ;
g.fillOval(315 , 295 , 10 , 10) ;
g.fillOval(315 , 305 , 10 , 10) ;
g.fillOval(315 , 315 , 10 , 10) ;
g.setColor(Color.black) ;
g.fillRect(295 , 260 , 10 , 40) ;
g.fillOval(285 , 310 , 10 , 10) ;
g.fillOval(305 , 310 , 10 , 10) ;
public void run()
for (int a = 0; a<60000; a++)
dy1 = dy1 - tankbullet ;
dx2 = dx2 + tankbullet ;
dy3 = dy3 + tankbullet ;
dx4 = dx4 - tankbullet ;
至于你这样的问题我没有遇到哦,看下图:
本回答被提问者采纳LInux javac时, 提示command not found
这个是我之前看了很多的论坛发现的问题,我想了很久也没有发现问题,明明路径都是对的,配置文件也没有错误,为什么最后却只有执行java好使,但是执行javac不好使
因为java分两个版本一个是jre,一个是jdk,就是jre的版本是带,运行环境的,而linux系统不需要这个运行环境,如果你是在linux系统上装这个java ,那么选择使用jdk的版本就行了。
最好装jdk1.6版本比较稳定,其他的版本还是有其他的错误,具体装法请看我的linux配置jdk。
以上是关于java运行时,提示需要'' class '' 或'' interface ‘’的主要内容,如果未能解决你的问题,请参考以下文章
连接mysql时提示java.sql.SQLException: Access denied for user 'root'@'DESKTOP-N2B2D9A' (us
在命令提示符窗口里输入javac有反应,但是输入java不能运行?
配置好环境变量以后再cmd窗口可以执行,但是在java里面执行报错,提示:'imp' 不是内部或外部命令?
spring jpa使用@service注解时失效提示No bean named 'countryService' is defined