我参加了两个开源游戏,学习如何将文本叠加到另一个游戏中。然而,每当我尝试从下一个转换一段代码时,我得到的只是异常。确保我使用以下方法绘制正确的字符串:
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);
}
}
谁能告诉我如何使用图形错误?
答案 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的背景是透明的,并将其放在窗口上的任何位置。