8

JTextPane を使用して、境界線のあるテーブルを含む HTML を表示しています。シンプルな 1 ピクセルの境界線が必要です。

使ってみstyle="border: 1px solid; border-collapse:collapse"ました。これは Web ブラウザーでは機能しますが、JTextPane では機能しません。

JTextPane で HTML を使用して単純な 1 ピクセルのテーブル ボーダーを作成する方法はありますか?

4

5 に答える 5

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);
}
于 2011-02-04T15:53:31.437 に答える
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);
            }
        });
    }
}
于 2011-08-19T21:24:41.973 に答える
1

javax.swing.text.htmlに基づいていますが、タグのborder属性をHTML 3.2使用できます。<table>

于 2010-07-28T19:22:08.003 に答える
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>
于 2014-10-31T09:22:00.253 に答える
0

Trashgod の言うとおりです。Java の HTML サポートには制限があります。では、HTML の回避策を使用しない手はありません。境界線のあるセルが 1 つある別のテーブル内にテーブル (境界線なし) を配置するだけです。

<table id='outerTable' border='1'><tr><td>
   <table id='innerTable'>
      // Content here
   </table>
</td></tr></table>

これは最もクリーンなメソッドではありませんが、HTML 3.2 の制限を回避しています。

于 2011-01-05T14:41:31.073 に答える