Java 爪哇帆布拉绳赢得';除非从NetBeans运行,否则不能使用粗体文本

Java 爪哇帆布拉绳赢得';除非从NetBeans运行,否则不能使用粗体文本,java,canvas,fonts,awt,Java,Canvas,Fonts,Awt,我正在Java画布上制作一个在线多人游戏(没有什么太复杂的,只是一个自上而下的坦克射击游戏)。你可能会认为我是来询问有关网络、插座等方面的问题的,但我所做的远远不止这些,而且我遇到了一些奇怪的事情 基本上,我在画布上用粗体字体绘制了一些字符串。当我从NetBeans运行它时(不是构建,只是按F6/绿色运行按钮),文本显示为粗体。但是,当我构建项目并运行JAR文件时,文本不是粗体的 注: 我尝试更新Java,因为我落后了很多更新。没有修好 下面是一个代码片段,显示我正确地绘制了粗体文本,但我不

我正在Java画布上制作一个在线多人游戏(没有什么太复杂的,只是一个自上而下的坦克射击游戏)。你可能会认为我是来询问有关网络、插座等方面的问题的,但我所做的远远不止这些,而且我遇到了一些奇怪的事情

基本上,我在画布上用粗体字体绘制了一些字符串。当我从NetBeans运行它时(不是构建,只是按F6/绿色运行按钮),文本显示为粗体。但是,当我构建项目并运行JAR文件时,文本不是粗体的

注:

  • 我尝试更新Java,因为我落后了很多更新。没有修好
下面是一个代码片段,显示我正确地绘制了粗体文本,但我不知道对于此类问题还需要显示什么,因为代码不可能是问题所在

g.setFont(new Font("TimesRoman", Font.BOLD, 50));
g.setColor(Color.red);
g.drawString("Connection Failed.", x, y);
TL;DR-在画布上绘制粗体文本在运行JAR文件时不是粗体的,而是在从NetBeans运行时


感谢所有的帮助。谢谢

看起来您可能正在绘制函数中创建字体。鉴于每秒可能调用多次paint函数,这可能是源效率低下,并且可能是资源不足。创建类时创建字体(可能作为静态资源),然后在每次绘制调用中使用相同的字体对象

以效率的名义,图形对象可以在绘制对象时使用快捷方式。这可以包括不加粗大字体,不在对角线上使用抗锯齿等。速度是王道。当然,你可以告诉图形引擎你更关心的是外观而不是速度,使用


您可以使用一次设置多个提示。

是否使用
缓冲策略
?我使用普通字体和粗体字体进行了快速测试,没有问题。考虑提供一个可以帮助我们更好地理解你的问题,并为你提供一个更好的机会来获得你的问题的合适答案。如果你有,你会意识到这与你无关@MadProgrammer是的,我使用的是缓冲策略。@AndrewThompson这是我的错,我不是有意选择的!对不起,我照你说的做了,但似乎什么都没变。我明白您的意图,但我看不到优化和呈现提示如何改变它在作为测试运行和运行实际JAR文件时的不同行为。据我所知,它们不应该运行相同的测试吗?当运行单元测试时,JVM不会在测试之间重新启动。在一个单元测试中更改的设置可能会影响另一个单元测试。正确编写的单元测试应该使JVM保持其原始状态,但可能会意外更改JVM设置、默认值等等。NetBeans可能在非标准JVM状态下启动测试。问题是需要哪种设置、选项和控件来提供所需的结果。您还可以尝试其他渲染提示。但请张贴正确和错误外观的图片,这样我们就可以重现问题,并有希望修复。否则,我们只能猜测。
import static java.awt.RenderingHints.*;

void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;

    g2d.setRendingHint(KEY_RENDERING, VALUE_RENDERING_QUALITY);
    g2d.setRendingHint(KEY_TEXT_ANTIALIAS, VALUE_TEXT_ANTIALIAS_ON);