Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javanoob-绘图文本_Java - Fatal编程技术网

javanoob-绘图文本

javanoob-绘图文本,java,Java,我用了两个开源游戏来学习如何将文本从一个游戏叠加到另一个游戏上。然而,每当我尝试从下一段代码转换一段代码时,我得到的都是异常。要确保im绘制的字符串正确,请使用: import java.awt.*; public class charge{ Image buffer; Graphics bufferg; public void draw2(Graphics g2d){ g2d.setFont(new Font("Helvetica", Font

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

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);

    }
}


有人能告诉我我是如何错误地使用图形的吗?

正确地使用图形类是非常棘手的,特别是如果您是java新手的话。您得到的错误很可能是空指针,因为您的g2d arg可能是空的。在java中绘制文本的一种(首选)方法是对JPanel类进行子类化,并重写paint(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(); 
  }
}

如果您想将文本用于覆盖,那么只需确保文本面板的背景是透明的,并将其放置在窗口中您想放置的任何位置。

谢谢您的回答,我仍然觉得有点困惑,您可以链接我来阅读吗?谢谢