首页 / JAVA / Java(AWT):将文本放在框中
Java(AWT):将文本放在框中
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java(AWT):将文本放在框中,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2663字,纯文字阅读大概需要4分钟。
内容图文
![Java(AWT):将文本放在框中](/upload/InfoBanner/zyjiaocheng/671/e2fb3ef547b147ea8948d629bcbd5897.jpg)
我有一个扩展框架的应用程序.然后,它将使用以下内容显示几行文字:
Font f = new Font("Arial", Font.PLAIN, 10);
g.setFont(f);
g.drawString("Test|great Yes ^.", x, y + 10);
现在发生的情况是文本不适合周围的框.例如.我期望文本适合[x,y]-[x width,y 10](不在乎宽度),但是它会稍微低于y 10行.现在,对于大多数字符(“ T”,“ e”等)都适合,但是“ |”和“ g”不!它们低于y 10线.似乎无法使用:以y characterHeight绘制.但是有效吗?
明白我的意思,这里是一些示例代码:
import java.awt.*;
public class test extends Frame
{
public test()
{
/* retrieve max window size */
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
GraphicsConfiguration [] gc = gs[0].getConfigurations();
Rectangle r = gc[0].getBounds();
setSize(r.width, r.height);
setVisible(true);
}
public void paint(Graphics g)
{
final int windowWidth = getSize().width;
final int windowHeight = getSize().height;
g.setColor(Color.BLUE);
g.fillRect(0, 0, windowWidth, windowHeight);
g.setColor(Color.WHITE);
g.fillRect(0, 100, windowWidth, 110);
int textHeight = 100;
Font f = new Font("Arial", Font.PLAIN, textHeight);
g.setFont(f);
g.setColor(Color.BLACK);
g.drawString("Test|great Yes ^.", 10, 100 + textHeight);
}
public void guiLoop()
{
for(;;) { try { Thread.sleep(1000); } catch(Exception e) { } }
}
public static void main(String [] args)
{
new test().guiLoop();
}
}
我也尝试了以下代码:
public void paint(Graphics g)
{
final int windowWidth = getSize().width;
final int windowHeight = getSize().height;
g.setColor(Color.BLUE);
g.fillRect(0, 0, windowWidth, windowHeight);
g.setColor(Color.WHITE);
g.fillRect(0, 100, windowWidth, 110);
int textHeight = 100;
String str = "Test|great Yes ^.";
Font f = new Font("Arial", Font.PLAIN, textHeight);
Rectangle2D boundingRectangle = f.getStringBounds(str, 0, str.length(), new FontRenderContext(null, false, false));
f = f.deriveFont((float)(textHeight * (textHeight / boundingRectangle.getHeight())));
boundingRectangle = f.getStringBounds(str, 0, str.length(), new FontRenderContext(null, false, false));
g.drawString(str, 10, 100 + (int)boundingRectangle.getHeight());
g.setFont(f);
g.setColor(Color.BLACK);
g.drawString(str, 10, 100 + textHeight);
}
这样做会更好一些:文本较小,因此可能适合,但是仍然存在y位置不正确的问题.
感谢所有帮助!
解决方法:
怎样使用FontMetrics?您可以使用g.getFontMetrics()从Graphics对象获得它.
比您可以获取最大下降或上升或直接获取最大高度(使用getHeight),因此您的实现将不受字体限制,并且应该可以正常工作..检查文档here!
编辑(解释注释):
没有直接的方法告诉字符串以适合盒子的方式绘制自身.您必须自己做..例如从最大字体大小开始,然后检查宽度是否适合该框,否则请减小大小并重试.对于高度,您应该首先确定(或获取)最大字体高度,然后可以设置框应为多少像素.
内容总结
以上是互联网集市为您收集整理的Java(AWT):将文本放在框中全部内容,希望文章能够帮你解决Java(AWT):将文本放在框中所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。