【问题标题】:Does anyone know of a java2d text library?有人知道 java2d 文本库吗?
【发布时间】:2009-06-13 19:22:50
【问题描述】:

这是我在游戏中需要的关于文本的内容:

Word Wrap Support given a bounding box
Vertical and Horizontal alignment given a bounding box

现在,我一直在阅读有关如何使用 TextLayout 的信息,并且似乎可以自己编写所有这些内容,但我更愿意在更高的层次上思考。我只想要一个带有这样签名的标签类:

public Label(String text, Alignment alignment, VAlignment vAlignment);

有谁知道可以简化文本格式的开源(非 gpl)库?

【问题讨论】:

  • 您使用的是自定义的paint() 方法还是Swing 组件?
  • 我正在使用 java2d,所以我正在使用自定义的 paint() 方法。
  • 我认为大多数图形程序只是简单地创建了自己的文本渲染。为了最大限度地控制,您可以使用 String.split()、FontMetrics 等实现自己的版本。
  • 这对我来说不够灵活。我的游戏有聊天室

标签: java text java-2d


【解决方案1】:

如果您使用 java2d 绘制游戏图形,您应该能够使用 awt 或 swing 文本组件来呈现您的文本。你可以例如创建一个 JLabel 并使用 Graphics2D 上下文在渲染​​队列中手动调用其绘制和更新方法。

JLabel label = new JLabel("your text");
label.setLocation(0, 100); 
label.setSize(20, 100);
label.paint(g); // g is your Graphics2D context

【讨论】:

    【解决方案2】:

    查看这个官方教程:http://download.oracle.com/javase/tutorial/2d/text/index.html 它包含显示文本所需的一切。 或者更简单地使用 TextLayout,如果你不喜欢阅读=) (http://download.oracle.com/javase/1.4.2/docs/api/java/awt/font/TextLayout.html)

    【讨论】:

      【解决方案3】:

      在尝试了@Daniel 的回答后,我得出了以下解决方案:

          JLabel label = new JLabel("your text");
          label.setSize(screen); //screen is a Dimension Object..
          label.setHorizontalAlignment(SwingConstants.CENTER);
          label.paint(g2d); // g is your Graphics2D context
      

      希望对你有帮助...

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 2011-03-31
        • 1970-01-01
        • 2010-12-26
        • 1970-01-01
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多