Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java String.format无法作为jar启动应用程序_Java_String_Formatting_Executable Jar - Fatal编程技术网

Java String.format无法作为jar启动应用程序

Java String.format无法作为jar启动应用程序,java,string,formatting,executable-jar,Java,String,Formatting,Executable Jar,我在使用javas string.format格式化字符串时遇到问题。 我正在将包含描述和价格的字符串添加到swing JList组件中。我希望价格总是低于对方 因此,我使用: String ret = String.format( "%s %-" + Integer.toString(articleNameLength) + "s %3s %9.2f EUR", (new SimpleDateFormat("dd.MM.yyyy")).format(date), ar

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

因此,我使用:

String ret = String.format( "%s %-" + Integer.toString(articleNameLength) + "s %3s %9.2f EUR",
             (new SimpleDateFormat("dd.MM.yyyy")).format(date), article, " ", price );
您还可以在第205行的以下位置查看代码:

如果我使用eclipse或一个运行的简单批处理文件启动应用程序,这就可以正常工作

java -jar MyBudget.ja
但是,如果我在文件资源管理器中使用双击来启动jar,则布局会发生变化,价格也不会低于彼此。
知道为什么会这样吗?

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

我将显示字符串的JList swing组件的字体更改为未进一步指定的单间距字体。这会导致应用程序加载任何单间距字体,并正常工作

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

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