我正在使用JTextPane显示一些包含带边框的表格的HTML。我希望它有一个简单的1像素边框。
我尝试使用style="border: 1px solid; border-collapse:collapse"
。这适用于Web浏览器,但不适用于JTextPane。
有没有办法在JTextPane中使用HTML创建一个简单的1像素表格边框?
答案 0 :(得分:8)
使用
的组合public static final String TD = "<td style='background-color: white'></td>";
public static final String TABLE_PROP = "style='border: 1px black solid; background-color: black' width='100%' cellspacing='1' cellpadding='2'";
String html = "<table " + TABLE_PROP + ">" + "<tr>" + TD + TD + "</tr><tr>" + TD + TD + "</tr></table>";
try
{
htmlEditorKit.insertHTML(htmlDocument, caretPosition, html, 0, 0, null);
}
答案 1 :(得分:3)
这是一个完整的例子:
package test
import java.awt.SystemColor;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
@SuppressWarnings("serial")
public class HtmlDemo extends JPanel {
public HtmlDemo() {
setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS));
String rgb = Integer.toHexString(SystemColor.window.getRGB());
String backgroundColor = rgb.substring(2, rgb.length());
String html = "<html>\n"
+ "<head>\n"
+ "<style type=\"text/css\">\n"
+ "table {\n" + "width: 100%\n" + "}\n"
+ "td, th {\n" + "background-color: #" + backgroundColor + "\n"
+ "}\n"
+ "</style>\n"
+ "</head>\n"
+ "<body>\n"
+ "HTML table test:\n"
+ "<div style=\"background-color: black\">\n"
+ "<table border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\n"
+ "<tr>\n" + "<td>\n" + "cell1\n" + "</td>\n" + "<td>\n" + "cell2\n" + "</td>\n" + "</tr>\n"
+ "<tr>\n" + "<td>\n" + "cell3\n" + "</td>\n" + "<td>\n" + "cell4\n" + "</td>\n" + "</tr>\n"
+ "</div>\n"
+ "</body>\n"
+ "</html>";
JLabel label = new JLabel(html);
label.setVerticalAlignment(SwingConstants.CENTER);
label.setHorizontalAlignment(SwingConstants.CENTER);
setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
add(label);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame("HtmlDemo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new HtmlDemo());
frame.pack();
frame.setVisible(true);
}
});
}
}
答案 2 :(得分:1)
javax.swing.text.html
基于HTML 3.2
,但您可以使用<table>
标记的 border 属性。
答案 3 :(得分:0)
trashgod是对的 - Java的HTML支持是有限的 - 那么为什么不使用HTML解决方法呢?只需将您的表(没有边框)放在另一个表中,其中一个单元格具有边框。
<table id='outerTable' border='1'><tr><td>
<table id='innerTable'>
// Content here
</table>
</td></tr></table>
这不是最干净的方法,但确实克服了HTML 3.2的限制。'
答案 4 :(得分:0)
以下是在HTML 3.2中为优先颜色创建表格边框的示例:
<table width="100%" cellpadding="1" bgcolor="#000000">
<tr><td>
<table width="100%" bgcolor="#F6F6F6">
<tr><td>
Test
</td></tr>
</table>
</td></tr></table>