【发布时间】:2020-11-17 04:02:06
【问题描述】:
不幸的是,Swing 支持 HTML 3.2。 我想要实现的是:
但我也做不到。无论我做什么,文本 (sometext) 和图像之间都没有对齐。
我已经尝试了以下所有组合:align='middle' align='top' align='bottom' 在 <td> 标签和 <img> 标签内。我也试过valign。
<html>
<body>
<table border="1" >
<tr>
<td style='width:50%'>
<img src="https://www.w3schools.com/images/stickman.gif" align='middle' width="24" height="24">
sometext
</td>
<td style="width:50%">something</td>
</tr>
</table>
</body>
</html>
我得到的是这样的:
有办法实现吗?
如果你想测试它是否在 Swing 中工作,Java 示例:
public class HtmlExample {
public static void main(String[] args) {
//@formatter:off
SwingUtilities.invokeLater(() -> {
String prefix = "<html><body><table border='1'><tr>";
String suffix = "</tr></table><body><html>";
StringBuilder sb = new StringBuilder(prefix);
sb.append("<td style='width:50%'>");
sb.append("<img src=\"https://www.w3schools.com/images/stickman.gif\" align='top' width=\"24\" height=\"24\">");
sb.append("sometext");
sb.append("</td>");
sb.append("<td style='width:50%'>");
sb.append("something");
sb.append("</td>");
sb.append(suffix);
JLabel label = new JLabel(sb.toString());
JOptionPane.showMessageDialog(null, label);
});
}
}
我尝试了很多HTML 3.2 Reference Specification 中提到的东西,但没有一个能满足我的需求。
如果我这样做:
<html>
<body>
<table border="1" >
<tr style=''>
<td style='width:50%;'>
<div>
<img style="vertical-align:middle" src="https://www.w3schools.com/images/stickman.gif" width="24" height="24">
<span>Works.</span>
</div>
</td>
<td style="width:50%">
<div>
<span>Works.</span>
</div>
</td>
</tr>
</table>
</body>
</html>
我接近它了。但这在 HTML 3.2 中不起作用
编辑:(在@Frakcool 强调使用JTable 之后)
我不使用JTable 的原因是我将文本用作工具提示。如this answer 中所述。
【问题讨论】:
-
你想让它们在中间垂直对齐吗?
-
@Frakcool 是的..
-
您不能使用
JTable或其他组件而不是尝试使用HTML 标记的任何具体原因? -
@Frakcool 我已经编辑了我的问题。当我开始写我的问题时,我想提一下为什么我使用 HTML 而不是任何类型的组件,但后来我完全忘记了。