使用g.drawString显示新行

时间:2013-10-29 14:55:15

标签: java applet

我必须创建一个显示自己的源代码的applet。这就是我所拥有的:

 //Reference the required Java libraries
 import java.applet.Applet; 
 import java.awt.*; 

 //The applet code
 public class FirstApplet extends Applet {

     public void paint(Graphics g) {

       //Draw a rectangle width=250, height=100
       g.drawRect(0,0,250,600); 

       //Set the color to blue
       g.setColor(Color.blue); 

       //Write the message to the web page
       g.drawString("\n //Reference the required Java libraries\n import java.applet.Applet;\n import java.awt.*; \n //The applet code\n public class FirstApplet extends Applet {\n     public void paint(Graphics g) {\n       //Draw a rectangle width=250, height=100\n      g.drawRect(0,0,250,100); \n       //Set the color to blue\n       g.setColor(Color.blue); \n       //Write the message to the web page\n       g.drawString",10,50); 
    }
 } 

但是,\ n不会创建新行。我的文字水平延续直到完成。我如何在g.drawString字段中创建新行?

2 个答案:

答案 0 :(得分:0)

也许你可以尝试这样的事情(未经测试):

public static void draw(final Graphics g, final int startX, final int startY, final String... lines){
    final FontMetrics metrics = g.getFontMetrics();
    final int spacing = metrics.getHeight() + metrics.getMaxDescent();
    draw(g, startX, startY, spacing, lines);
}

public static void draw(final Graphics g, final int startX, final int startY, final int vSpacing, final String... lines){
    int y = startY;
    for(final String line : lines){
        g.drawString(line, startX, y);
        y += vSpacing;
    }
}

第一种方法将计算高度(基于Font对象的当前Graphics的高度和下降)。第二种方法允许您输入自定义垂直间距值以获得更多可自定义性。

答案 1 :(得分:0)

  

我必须创建一个显示自己的源代码的applet。

两种选择:

  1. 使用AppletContext.showDocument(URL)浏览源文件。
  2. 使用JTextAreaJTextComponent.read(Reader,Object)阅读来源。
  3. 顺便说一句

    1. 为什么编写applet代码?如果是由于规格。请老师将其转介给Why CS teachers should stop teaching Java applets
    2. 为什么选择AWT而不是Swing?有关放弃使用AWT组件的许多理由,请参阅Swing extras over AWT上的此答案。如果您需要支持较旧的基于AWT的API,请参阅Mixing Heavyweight and Lightweight Components