Java noob - 绘图文本

时间:2014-08-13 16:54:11

标签: java

我参加了两个开源游戏,学习如何将文本叠加到另一个游戏中。然而,每当我尝试从下一个转换一段代码时,我得到的只是异常。确保我使用以下方法绘制正确的字符串:

import java.awt.*;

public class charge{


    Image buffer;
    Graphics bufferg;

    public void draw2(Graphics g2d){

        g2d.setFont(new Font("Helvetica", Font.PLAIN, 13));

        g2d.drawString("Most relationships seem so transitory", 20, 30);

    }

}

谁能告诉我如何使用图形错误?

1 个答案:

答案 0 :(得分:0)

正确使用图形类非常棘手,特别是如果您是java的新手。你得到的错误很可能是一个空指针,因为你的g2d arg可能是null。在java中绘制文本的一种(首选)方法是子类化JPanel类并覆盖绘制(Graphics)方法,因此无论何时绘制面板,都使用文本绘制。这是一个例子:

public class Test1 extends JFrame {

 public Test1(){
    TextPanel t = new TextPanel("Here's some text!");
    getContentPane().add(t, BorderLayout.CENTER);
    setMinimumSize(new Dimension(500, 500));

    //Various JFrame initialization stuff. 
    //repaint() makes sure the text is immediately visible.
    repaint();
    pack();
    setVisible(true);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  class TextPanel extends JPanel{
    private String text;

    public TextPanel(String t){
      text = t;
    }

    //Called by swing whenever this or a parent component calls repaint()
    @Override
    public void paint(Graphics g){
      g.setFont(new Font("Helvetica", Font.PLAIN, 13));
      g.drawString(text, 20, 30);

    }
  }

  public static void main(String[] args){
    new Test1(); 
  }
}

如果要将文本用于叠加层,则只需确保TextPanel的背景是透明的,并将其放在窗口上的任何位置。