【问题标题】:Java String.format is not working starting app as jarJava String.format 无法将应用程序作为 jar 启动
【发布时间】:2014-02-14 14:11:02
【问题描述】:

我在使用 javas String.format 格式化字符串时遇到问题。 我正在将包含描述和价格的字符串添加到摇摆 JList 组件中。我希望价格始终低于对方。

所以我使用:

String ret = String.format( "%s %-" + Integer.toString(articleNameLength) + "s %3s %9.2f EUR",
             (new SimpleDateFormat("dd.MM.yyyy")).format(date), article, " ", price );

您还可以在第 205 行查看代码: https://github.com/hanneseilers/MyBudget/blob/master/MyBudget/src/de/hanneseilers/core/Article.java

如果我使用 eclipse 或运行的简单批处理文件启动应用程序,那就很好了

java -jar MyBudget.ja

但是,如果我在文件资源管理器中双击启动 jar,则布局会中断,并且价格不会低于对方。 知道为什么会这样吗?

【问题讨论】:

  • 你是如何构建 jar 的?
  • 您能否通过执行批处理文件并双击同一个 .jar 来确认您得到不同的结果?具体来说,您是否 100% 确定在两种情况下都使用完全相同的 .jar?在这种情况下,您能否上传或链接到正确绘制的 UI 的屏幕截图和另一个损坏的 UI?
  • 我使用 Eclipse 导出功能(或 Eclipse 生成的 ant 脚本)创建了 jar。我检查了批处理脚本,它运行与我用于双击相同的 jar。我将两个屏幕截图上传到:imageshack.com/a/img542/9201/639v.pngimageshack.com/a/img819/4053/upda.png 我发现使用批处理脚本 JList 组件使用我在布局中设置的等宽字体。如果我通过双击启动 jar,它使用默认的 sans-serif 字体,并且每个字符的空间都不相同。但是为什么使用一种启动方法正确的字体而另一种没有呢?

标签: java string formatting executable-jar


【解决方案1】:

我找到了一个可行的解决方案。 问题是,如果我使用批处理脚本启动 jar,应用程序只能加载特定的等宽字体(每个字符的宽度相同)。使用双重脚本,java找不到特定字体并使用默认的非等宽(每个字符的宽度不规则)。

我将显示字符串的 JList swing 组件的字体更改为未进一步指定的等宽字体。这会导致应用程序加载任何等宽字体并且它正在工作!

list.setFont(new Font("Monospaced", Font.BOLD, 12));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2017-01-03
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多