为什么编译JApplet类时,会生成两个 class。 发现编译JApplet时总是生成两个class: *.class 和 *$1.class 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个class中可能有其他的类 jbuilder里面button的事件 往往是一个类 编译之后会生成.class文件 你的Java文件中可以定义多个Class,不过只能有一个是public或者你的Class里面有内部类LZ的情况应该是内部类 另一个class中类 在jbuilder里同样要编译一个.class文件。这里生成的*.class 和 *$1.class两个类一个是主类,另一个是你在程序中定义一个名为1的类。所以编译是会出现一个*$1.class。 不是很明白楼上的解析我附上源代码:-----------------------------------------------------------------------------------------------import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.net.URL;public class ATMPlayer extends JApplet implements Runnable { private int index=4; //图片的索引 private Thread changer; //动态改变图片的线程,形成动画效果 private boolean stopFlag=true; //控制线程启动与关闭的标志 private Image[] images; //存放钞票图片 private Image mouth; //吐钞口 private JButton contrlButton=new JButton(" 开始取款! "); public void init() { images=new Image[4]; //作为独立应用程序时通过以下这段代码从本地机器加载图片 Toolkit tk=getToolkit(); images[0]=tk.getImage("F:\\money1.jpg"); images[1]=tk.getImage("F:\\money2.jpg"); images[2]=tk.getImage("F:\\money3.jpg"); images[3]=tk.getImage("F:\\money4.jpg"); mouth=tk.getImage("F:\\mouth.jpg"); contrlButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(stopFlag)start(); else stop(); }}); Container contentPane=getContentPane(); contentPane.setBackground(Color.WHITE); contentPane.add(contrlButton, BorderLayout.NORTH); } public void start(){ changer=new Thread(this); stopFlag=false; index=0; contrlButton.setText(" 够啦! "); changer.start(); } public void paint(Graphics g) { super.paint(g); g.drawImage(mouth,100,45,this); synchronized(this){if(index<4)g.drawImage(images[index],107,50,this);} } public void stop(){ stopFlag=true; contrlButton.setText(" 开始取款! "); } public void run(){ while(!stopFlag){ repaint(); //The word will be redrawed with new fontSize try{ if(index==3)Thread.sleep(500); else Thread.sleep(200); }catch(InterruptedException e){throw new RuntimeException(e);} if(++index>4) index=0; //显示下一张照片 } index=4; repaint(); //刷新图形 } public static void main(String args[]){ JFrame gui=new JFrame("取款机"); ATMPlayer atm=new ATMPlayer(); atm.init(); gui.setContentPane(atm); gui.setSize(300,300); gui.setVisible( true ); gui.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); }} contrlButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ if(stopFlag)start(); else stop(); }});匿名内部类 匿名内部类生成的.class文件是"外部类类名"$"n".class n是该类的第几个匿名内部类。 socket readObject出错 请问ibatis的MAP文件中,如何把实体类的类名插入到数据库呢? 如何定义一个ArrayList数组。 新手请教:关于路径的问题 Collection List接口的问题 我想用socket连新浪然后取出输入流的信息为什么不行呢?代码在里面阿 父线程如何停止一个子线程(无引用) [急]JSP+Applet出错... 请问JAVA数据库链接使用连接池的方法。 100分求Borland Enterprise Server AppServer5.0国内下载地址 JAVA如何返回实例名? 怎么设置这样一个快捷键?请求帮忙啊!
或者你的Class里面有内部类
LZ的情况应该是内部类
这里生成的*.class 和 *$1.class两个类
一个是主类,另一个是你在程序中定义一个名为1的类。所以编译是会出现一个*$1.class。
我附上源代码:
-----------------------------------------------------------------------------------------------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.URL;public class ATMPlayer extends JApplet implements Runnable {
private int index=4; //图片的索引
private Thread changer; //动态改变图片的线程,形成动画效果
private boolean stopFlag=true; //控制线程启动与关闭的标志
private Image[] images; //存放钞票图片
private Image mouth; //吐钞口
private JButton contrlButton=new JButton(" 开始取款! "); public void init() { images=new Image[4];
//作为独立应用程序时通过以下这段代码从本地机器加载图片
Toolkit tk=getToolkit();
images[0]=tk.getImage("F:\\money1.jpg");
images[1]=tk.getImage("F:\\money2.jpg");
images[2]=tk.getImage("F:\\money3.jpg");
images[3]=tk.getImage("F:\\money4.jpg");
mouth=tk.getImage("F:\\mouth.jpg"); contrlButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(stopFlag)start();
else stop();
}}); Container contentPane=getContentPane();
contentPane.setBackground(Color.WHITE);
contentPane.add(contrlButton, BorderLayout.NORTH);
} public void start(){
changer=new Thread(this);
stopFlag=false;
index=0;
contrlButton.setText(" 够啦! ");
changer.start();
} public void paint(Graphics g) {
super.paint(g);
g.drawImage(mouth,100,45,this);
synchronized(this){if(index<4)g.drawImage(images[index],107,50,this);}
} public void stop(){
stopFlag=true;
contrlButton.setText(" 开始取款! ");
} public void run(){
while(!stopFlag){
repaint(); //The word will be redrawed with new fontSize
try{
if(index==3)Thread.sleep(500);
else Thread.sleep(200);
}catch(InterruptedException e){throw new RuntimeException(e);} if(++index>4) index=0; //显示下一张照片
} index=4;
repaint(); //刷新图形
} public static void main(String args[]){
JFrame gui=new JFrame("取款机");
ATMPlayer atm=new ATMPlayer();
atm.init(); gui.setContentPane(atm);
gui.setSize(300,300);
gui.setVisible( true );
gui.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
}
}
public void actionPerformed(ActionEvent e){
if(stopFlag)start();
else stop();
}});匿名内部类