2013-01-17 81 views
0

我已經在一個乾淨的BasicGame上測試了TextField,它工作正常。 (我看到的邊界,我打字。)textfield不能與BasicGameState配合使用

代碼:

  TextField lanText; 
      TrueTypeFont font; 

      public void init(........) 
     { 
      font = new TrueTypeFont(new java.awt.Font(java.awt.Font.SERIF,java.awt.Font.BOLD,8),false); 
      lanText = new TextField(gc, font, 50, 100, 350, 25); 

} 

    public void render(.....) 
     { 
      lanText.render(gc, g); 
     } 

但是當我嘗試在我的遊戲BasicGameState這是行不通的。怎麼了? (我可以看到邊框,但我不能打字)

我有4個州。菜單0.遊戲1.合作2.選項3.

我試圖將它添加到狀態2(合作)。

public class Game 
extends StateBasedGame 
{ 
    public final int menu = 0; 
    public final int game = 1; 
    public final int option = 2; 
    public final int coop = 3; 

    public Game(String gamename) 
    { 
     super(gamename); 
     this.addState(new Menu(menu)); 
     this.addState(new Game(game)); 
     this.addState(new Option(option)); 
     this.addState(new Coop(coop)); 
    } 

public void initStatesList(GameContainer gc) 
    throws SlickException 
    { 
    this.getState(menu).init(gc, this); 
    this.getState(game).init(gc, this); 
    this.getState(option).init(gc, this); 
    this.getState(coop).init(gc, this); 
    this.enterState(menu); 
} 
} 
+0

考慮在使用JTextField之前改用舊的東西。 –

+0

如何使用JTextField和slick2D?示例或任何教程。 – w2lf

+0

你在問題中沒有提到slick2D。恐怕我無法幫助你。 –

回答

0

好吧,我想通了。這裏是任何人都會遇到同樣問題的代碼。

import java.awt.Font; 
import org.newdawn.slick.GameContainer; 
import org.newdawn.slick.Graphics; 
import org.newdawn.slick.SlickException; 
import org.newdawn.slick.UnicodeFont; 
import org.newdawn.slick.font.effects.ColorEffect; 
import org.newdawn.slick.gui.ComponentListener; 
import org.newdawn.slick.gui.TextField; 
import org.newdawn.slick.state.BasicGameState; 
import org.newdawn.slick.state.StateBasedGame; 

public class Coop 
     extends BasicGameState 
{ 
    TextField text; 
    UnicodeFont font; 

    public Coop(int state) 
    { 
    } 

    public void init(GameContainer gc , StateBasedGame sbg) 
      throws SlickException 
    { 
     font = getNewFont("Arial" , 16); 
    } 

    public void render(GameContainer gc , StateBasedGame sbg , Graphics g) 
      throws SlickException 
    { 
     text.render(gc , g); 
     g.setFont(font); 
    } 

    public void update(GameContainer gc , StateBasedGame sbg , int delta) 
      throws SlickException 
    { 
     font.loadGlyphs(); 
    } 

    public int getID() 
    { 
     return 3; 
    } 

    public void enter(GameContainer gc , StateBasedGame sbg) 
      throws SlickException 
    { 
     text = new TextField(gc , font , 150 , 270 , 200 , 35); 
    } 

    public UnicodeFont getNewFont(String fontName , int fontSize) 
    { 
     font = new UnicodeFont(new Font(fontName , Font.PLAIN , fontSize)); 
     font.addGlyphs("@"); 
     font.getEffects().add(new ColorEffect(java.awt.Color.white)); 
     return (font); 
    } 
} 

我不知道爲什麼需要使用font.loadGlyphs();但沒有它,它不會工作。

相關問題