, , , JComponents, , . HTML . .
-, . MessageFormat, , ..
private static String formatInt(int amount) {
return new MessageFormat("{0,number}").format(new Object[]{amount});
}
private static String formatAmount(int amount) {
return new MessageFormat("{0,number,currency}").format(new Object[]{amount})
.replace(' ', '\u00a0');
}
HTML :
public static String billHTML() {
StringBuilder sb = new StringBuilder();
sb.append("<html>"
+ "<style type='text/css'>"
+ "body, h1, th, td {"
+ " font-family: Serif;"
+ " font-size: 12pt;"
+ "}"
+ "h1 {"
+ " font-size: 20pt;"
+ "}"
+ "table {"
+ "}"
+ "td, th {"
+ "}"
+ "th {"
+ " border-bottom: thin solid gray;"
+ "}"
+ ".overline td {"
+ " border-top: thin solid gray;"
+ "}"
+ "</style>"
+ "<body>");
sb.append("<h1>- BILL -</h1>");
String sql = "SELECT * FROM order_detail";
try (PreparedStatement st = connection.prepareStatement(sql)) {
try (ResultSet rs = st.executeQuery()) {
sb.append("<table width='650' cellspacing='0'>"
+ "<tr>"
+ "<th width='50%' align='left'>Item</th>"
+ "<th width='20%' align='right'>Quantity</th>"
+ "<th width='30%' align='right'>Amount</th>"
+ "</tr>");
int total = 0;
while (rs.next()) {
sb.append("<tr>"
+ "<td>")
.append(rs.getString("Item"))
.append("</td>"
+ "<td align='right'>")
.append(formatInt(rs.getInt("Quantity")))
.append("</td>"
+ "<td align='right'>")
.append(formatAmount(rs.getInt("Cost")))
.append("</td>"
+ "</tr>");
total += rs.getInt("Cost");
}
sb.append("<tr class='overline'>"
+ "<td> ")
.append("</td>"
+ "<td align='right'>")
.append("Total")
.append("</td>"
+ "<td align='right'>")
.append(formatAmount(total))
.append("</td>"
+ "</tr>"
+ "</table>");
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
return sb.toString();
}
frame.getContentPane().setBackground(Color.WHITE);
frame.getContentPane().setLayout(new FlowLayout());
JLabel jlabel = new JLabel(billHTML());
frame.add(jlabel);
MessageFormat .