java - 字符串格式在消息对话框上不起作用 - Java

标签 java string format messagedialog

首先,感谢您花时间帮助我!

我正在尝试使用字符串格式在消息对话框上打印几个句子。

当我使用字符串格式并将其打印在控制台上时,它会以正确的格式打印。 如下图:enter image description here

但是,当我尝试在消息对话框上打印它时,它以错误的格式打印,如下图所示: enter image description here

这就是我打印的方式:

  String result = new String();
  for(int i = 0; i<stocks.length;i++){
     result += stocks[i].toString() + "\n";
  }
       
  NumberFormat defaultFormat = NumberFormat.getCurrencyInstance();

  // Prints Result on Console
  System.out.println(result);
  System.out.println("The total amount is: " + defaultFormat.format(BestStocksMA.getTotalCostMA()));
  

  // Prints Result on Panel
  JOptionPane.showMessageDialog(null, "Your companies and stocks are:\n" + result + "\nThe total amount is: " + defaultFormat.format(BestStocksMA.getTotalCostMA()));

这就是我用来格式化字符串的内容:

  public String toString() {

       String description;
  
       description = String.format("%-25s", name) +
                     String.format("%-20s", defaultFormat.format(price)) +
                     String.format("%-20s", defaultFormat.format(calCostMA()));
     
    return description;
    }
 

如何才能使字符串以“漂亮”且有组织的方式在消息对话框上打印,就像在控制台上打印时一样?

非常感谢!

最佳答案

您可以使用 HTML 标签来设置文本格式。检查https://docs.oracle.com/javase/tutorial/uiswing/components/html.html了解更多详情。

我将创建一个 HTML 表格来显示结果。我希望您不需要帮助即可在 for 循环中创建行和列。

下面给出的是一个示例程序:

import javax.swing.JOptionPane;

public class Guess_The_Color {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        sb.append("<html>");
        sb.append("<table><tr><th>Name</th><th>Class</th><th>Roll No.</th></tr>");
        sb.append("<tr><td>Arvind</td><td>10</td><td>1</td></tr>");
        sb.append("<tr><td>Kumar</td><td>9</td><td>2</td></tr>");
        sb.append("<tr><td>Avinash</td><td>8</td><td>3</td></tr>");
        sb.append("</table>");
        sb.append("</html>");
        JOptionPane.showMessageDialog(null,sb.toString());
    }
}

输出:

enter image description here

如果您需要任何进一步的帮助,请随时发表评论。

更新:根据评论中的对话,我发布了以下代码,该代码适用于任意数量的行

StringBuilder sb = new StringBuilder();

sb.append("<html>");
sb.append("<b>Your companies and stocks are</b>");
sb.append("<table>");
for (int i = 0; i < stocks.length; i++) {
    sb.append("<tr><td>"+stocks[i].getName()+"</td><td>"+String.valueOf(stocks[i].getPrice())+"</td><td>"+String.valueOf(stocks[i].calCostMA())+"</td></tr>");
}       
sb.append("</table>");
sb.append("</html>");

sb.append("The total amount is: "+String.valueOf(BestStocksMA.getTotalCostMA()));

JOptionPane.showMessageDialog(null, sb.toString());

关于java - 字符串格式在消息对话框上不起作用 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164296/

相关文章:

工作流中中间作业的 Hadoop SequenceFile 输入/输出

java - 设置 java gui 输入的掩码百分比

java - 无法安装 Jenkins 的 SSH 代理插件

java - 如何处理Java中字符串的特定位置?

java - 如何从文件列表中搜索并计算模式?

python - 更改文件中的数字,无法使用 .split

java - 将 jar 转换为 dex 时模拟局部变量类型不匹配的异常

html - ckeditor 字体样式 13 px

java - 我需要大约 91 个 JTextArea 来显示信息。我可以通过什么方式管理每个 JTextArea 将显示的内容?

java - 如何在单击自定义 ListView 中的按钮时特别更改一行 TextView 值?