首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

谁能帮小弟我修改一下,多谢

2011-12-26 
谁能帮我修改一下,谢谢代码如下,编译出现提示,但能通过,运行出现错误packageplaygameimportjava.util.*i

谁能帮我修改一下,谢谢
代码如下,编译出现提示,但能通过,运行出现错误
package   playgame;

import   java.util.*;
import   javax.swing.*;
import   java.awt.*;
import   java.awt.event.*;

interface   CharacterSource{
public   void   addCharacterListener(CharacterListener   cl);
public   void   removeCharacterListener(CharacterListener   cl);
public   void   nextCharacter();
}

interface   CharacterListener{
public   void   newCharacter(CharacterEvent   ce);
}

class   CharacterEvent{
public   CharacterSource   source;
public   int   character;
public   CharacterEvent(CharacterSource   cs,int   c){
source=cs;
character=c;
}
}

class   CharacterEventHandler{
private   Vector   listeners=new   Vector();

public   void   addCharacterListener(CharacterListener   cl){
listeners.add(cl);
}

public   void   removeCharacterListener(CharacterListener   cl){
listeners.remove(cl);
}

public   void   fireNewCharacter(CharacterSource   source,int   c){
CharacterEvent   ce=new   CharacterEvent(source,c);
CharacterListener[]   cl=(CharacterListener[]   )listeners.toArray(new   CharacterListener[0]);
for(int   i=0;i <cl.length;i++){
cl[i].newCharacter(ce);
}
}
}

class   CharacterDisplayCanvas   extends   JComponent   implements   CharacterListener{
protected   FontMetrics   fm;
protected   char[]   tmpChar=new   char[1];
protected   int   fontHeight;

public   CharacterDisplayCanvas(){
setFont(new   Font( "Monospaced ",Font.BOLD,18));
fm=Toolkit.getDefaultToolkit().getFontMetrics(getFont());
fontHeight=fm.getHeight();
}

public   CharacterDisplayCanvas(CharacterSource   cs){
this();
setCharacterSource(cs);
}

public   void   setCharacterSource(CharacterSource   cs){
cs.addCharacterListener(this);
}

public   Dimension   preferredsize(){
return   new   Dimension(fm.getMaxAscent()+10,fm.getMaxAdvance()+10);
}

public   synchronized   void   newCharacter(CharacterEvent   ce){
tmpChar[0]=(char)ce.character;
repaint();
}

protected   synchronized   void   paintComponent(Graphics   gc){
Dimension   d=getSize();
gc.clearRect(0,0,d.width,d.height);
if(tmpChar[0]==0)return;
int   charWidth=fm.charWidth((int)tmpChar[0]);
gc.drawChars(tmpChar,0,1,(d.width-charWidth)/2,fontHeight);
}
}

class   RandomCharacterGenerator   extends   Thread   implements   CharacterSource{
static   char[]   chars;
static   String   charArray= "abcdefghijklmnopqrstuvwxyz ";
static{
chars=charArray.toCharArray();
}

Random   random;
CharacterEventHandler   handler;

public   RandomCharacterGenerator(){
random=new   Random();
handler=new   CharacterEventHandler();
}

public   int   getPauseTime(){
return   (int)(Math.max(1000,5000*random.nextDouble()));
}

public   void   addCharacterListener(CharacterListener   cl){
handler.addCharacterListener(cl);
}


public   void   removeCharacterListener(CharacterListener   cl){
handler.removeCharacterListener(cl);
}

public   void   nextCharacter(){
handler.fireNewCharacter(this,(int)chars[random.nextInt(chars.length)]);
}

public   void   run(){
for(;;){
nextCharacter();
try{
Thread.sleep(getPauseTime());
}catch(InterruptedException   ie){
return;
}
}
}
}

public   class   SwingTypeTester   extends   JFrame   implements   CharacterSource{
protected   RandomCharacterGenerator   producer;
private   CharacterDisplayCanvas   displayCanvas;
private   CharacterDisplayCanvas   feedbackCanvas;
private   JButton   quitButton;
private   JButton   startButton;
private   CharacterEventHandler   handler;

public   SwingTypeTester(){
initComponents();
}

private   void   initComponents(){
handler=new   CharacterEventHandler();
displayCanvas=new   CharacterDisplayCanvas();
feedbackCanvas=new   CharacterDisplayCanvas(this);
quitButton   =new   JButton();
startButton=new   JButton();
add(feedbackCanvas,BorderLayout.CENTER);
add(displayCanvas,BorderLayout.NORTH);
JPanel   p=new   JPanel();
startButton.setLabel( "start ");
quitButton.setLabel( "Quit ");
p.add(startButton);
p.add(quitButton);

add(p,BorderLayout.SOUTH);
addWindowListener(new   WindowAdapter(){
public   void   windowClosing(WindowEvent   evt){
quit();
}
});

feedbackCanvas.addKeyListener(new   KeyAdapter(){
public   void   keyPressed(KeyEvent   ke){
char   c=ke.getKeyChar();
if(c!=KeyEvent.CHAR_UNDEFINED)newCharacter((int)c);
}
});
startButton.addActionListener(new   ActionListener(){
public   void   actionPerformed(ActionEvent   evt){
producer=new   RandomCharacterGenerator();
displayCanvas.setCharacterSource(producer);
producer.start();
startButton.setEnabled(false);
feedbackCanvas.setEnabled(true);
feedbackCanvas.requestFocus();
}
});
quitButton.addActionListener(new   ActionListener(){
public   void   actionPerformed(ActionEvent   evt){
quit();
}
});
pack();
}
private   void   quit(){
System.exit(0);
}

public   void   addCharacterListener(CharacterListener   cl){
handler.addCharacterListener(cl);
}

public   void   removeCharacterListener(CharacterListener   cl){
handler.removeCharacterListener(cl);
}

public   void   newCharacter(int   c){
handler.fireNewCharacter(this,c);
}

public   void   nextCharacter(){
throw   new   IllegalStateException( "We   don 't   produce   on   demand ");
}

public   static   void   main(String   args[]){
new   SwingTypeTester().show();
}
}

[解决办法]
就是用了一些过时的方法
还有就是泛型的问题
但运行没有发现什么问题。可以运行

热点排行