【问题标题】:Making font size smaller than 1 Java GUI使字体大小小于 1 Java GUI
【发布时间】:2012-11-15 21:39:04
【问题描述】:

我想在我的图表的网格中标记我的井号,但是当我使用字体大小为 1 时,它会变得很大!有没有办法使字体大小小于1?我的编码方式是否遗漏了什么?

这是生成网格并尝试在散列上放置标签的代码。

     for (double k = myStart1; k <= myEnd1; k = k + (myEnd1 - myStart1) / 8) {
    g2.setColor(Color.BLACK);
        g2.draw(new Line2D.Double(k, (max - min) / 60, k, -(max - min) / 60));
        String labelx=String.valueOf(k);
        Float xCo=Float.parseFloat(Double.toString(k));
        g2.setFont(new Font("SansSerif",Font.PLAIN,1));
        g2.drawString(labelx, xCo, 0);
    }

这里是x^2.生成的图表截图

【问题讨论】:

  • 这毫无意义。字体大小为 1 甚至不可读,因此小于 1 将小于不可读。您确定字体设置正确吗?
  • 我怀疑你有一个错误,也许是没有字体,“SansSerif”(你确定这是正确的吗?)。你试过g2.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 1));吗?
  • "SansSerif" 完全有效,在这里检查构造函数:goo.gl/1cQU1
  • 也许 Java 正在将字体大小恢复为 16 左右,因为 1 比它可以呈现的要小。我怀疑是这种情况,但您可以尝试将字体大小设置为 8、10 或 12。或者,可能找不到名为“SansSerif”的字体,导致使用默认字体,即默认字体大小为 16。
  • @usernametbd:谢谢。然后我的建议无效,但我认为 OP 代码中某处存在错误的假设仍然是可能的。再次感谢。

标签: java swing user-interface font-size java-2d


【解决方案1】:

我确定您已经注意到,Font 构造函数为size 参数采用int - 实际上使构造具有@987654325 的字体(至少使用此方法)是不可能的@ 介于 0 和 1 之间。

不过,我确实发现Font 类的deriveFont 方法特别有趣:

public Font derivedFont(float size)

通过复制当前 Font 对象并为其应用新大小来创建新的 Font 对象。

参数: size - 新字体的大小。

deriveFont 方法声称要构造一个具有给定大小的新字体,它采用 float 作为参数 - 因此,可以执行以下操作:

Font theFont = new Font("SansSerif",Font.PLAIN,1);
theFont = theFont.deriveFont(0.5);
g2.setFont(theFont);

生成大小为 0.5 的字体。

现在,我自己还没有测试过——设置图形程序需要时间,所以你比我更适合尝试它。但只是把它作为一种可能性扔出去。

【讨论】:

  • 字体也可以在运行时进行转换。有关示例,请参见 this answer
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 2012-12-03
  • 2011-02-07
  • 2017-08-12
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
相关资源
最近更新 更多