字符串格式不适用于消息对话框 - Java
String formatting doesn't work on Message Dialog - Java
首先感谢您抽出时间来帮助我!
我正在尝试使用字符串格式在消息对话框中打印几个句子。
当我使用字符串格式并在控制台上打印时,它以正确的格式打印。
如下图:
但是,当我尝试在消息对话框中打印时,打印格式错误,如下图所示:
我是这样打印的:
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;
}
我怎样才能使字符串以 'pretty' 和有组织的方式打印在消息对话框中,就像在控制台上打印时一样?
非常感谢!
您可以使用 HTML 标签来格式化您的文本。查看 https://docs.oracle.com/javase/tutorial/uiswing/components/html.html 了解更多详情。
我会创建一个 HTML table 来显示结果。我希望您不需要帮助来创建 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());
}
}
输出:
如果您需要任何进一步的帮助,请随时发表评论。
更新: 根据评论中的对话,我发布了以下适用于任意行数的代码
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());
首先感谢您抽出时间来帮助我!
我正在尝试使用字符串格式在消息对话框中打印几个句子。
当我使用字符串格式并在控制台上打印时,它以正确的格式打印。
如下图:
但是,当我尝试在消息对话框中打印时,打印格式错误,如下图所示:
我是这样打印的:
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;
}
我怎样才能使字符串以 'pretty' 和有组织的方式打印在消息对话框中,就像在控制台上打印时一样?
非常感谢!
您可以使用 HTML 标签来格式化您的文本。查看 https://docs.oracle.com/javase/tutorial/uiswing/components/html.html 了解更多详情。
我会创建一个 HTML table 来显示结果。我希望您不需要帮助来创建 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());
}
}
输出:
如果您需要任何进一步的帮助,请随时发表评论。
更新: 根据评论中的对话,我发布了以下适用于任意行数的代码
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());