2

編集可能な JTextPane に HTML テーブルを配置しようとしています。そのため、Excelシートのようにテーブルを編集できます。私がそれをしようとすると、これらの奇妙な col および colgroup ボックスが表示され続けます。また、テーブルは想定どおりに機能していないようです..

次に例を示します。

            import java.awt.BorderLayout;
            import java.awt.EventQueue;
            import javax.swing.JFrame;
            import javax.swing.JPanel;
            import javax.swing.JTextPane;
            import javax.swing.border.EmptyBorder;
            import javax.swing.text.Document;
            import javax.swing.text.html.HTMLEditorKit;
            import javax.swing.text.html.StyleSheet;

            public class htmlEditor2 extends JFrame {
                private JPanel contentPane;
                public static void main(String[] args) {
                    EventQueue.invokeLater(new Runnable() {
                        public void run() {
                            try {
                                htmlEditor2 frame = new htmlEditor2();
                                frame.setVisible(true);
                            } catch (Exception e) {
                                e.printStackTrace();
                            }
                        }
                    });
                }
                public htmlEditor2() {
                    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                    setBounds(100, 100, 450, 300);
                    contentPane = new JPanel();
                    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
                    contentPane.setLayout(new BorderLayout(0, 0));
                    setContentPane(contentPane);
                    Foo f = new Foo();
                    f.setText("<html><body><table border=\"1\" width=\"985\" cellpadding=\"3\" cellspacing=\"0\" style=\"table-layout: fixed; border-collapse: collapse; border-width: 0px; border-color: #010101; \"><colgroup><col width=\"328\"></col>        <col width=\"328\"></col>        <col width=\"328\"></col>    </colgroup><tr><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><font face=\"Arial\"><span style=\"font-size:8pt\">row 1</span></font></div></td><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><font face=\"Arial\"><span style=\"font-size:8pt\">row2</span></font></div></td><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><font face=\"Arial\"><span style=\"font-size:8pt\">row3</span></font></div></td></tr><tr><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><span style=\"font-size: 8pt;\">&nbsp;</span></div></td><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><span style=\"font-size: 8pt;\">&nbsp;</span></div></td><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><span style=\"font-size: 8pt;\">&nbsp;</span></div></td></tr><tr><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><span style=\"font-size: 8pt;\">&nbsp;</span></div></td><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><span style=\"font-size: 8pt;\">&nbsp;</span></div></td><td align=\"left\" valign=\"top\" width=\"321\" style=\"border: solid #010101 1px; \"><div align=\"left\"><span style=\"font-size: 8pt;\">&nbsp;</span></div></td></tr></table><div align=\"left\">&nbsp;&nbsp;</div></body></html>");
                    contentPane.add(f);
                }
                class Foo extends JTextPane {
                    public Foo() {
                        super();
                        HTMLEditorKit kit = new HTMLEditorKit();
                        setEditorKit(kit);
                        StyleSheet styleSheet = kit.getStyleSheet();
                        styleSheet.addRule(""); //in case I need to add a CSS
                        Document doc = kit.createDefaultDocument();
                        setDocument(doc);
                    }
                }
            }

きれいにフォーマットされたバージョンのhtmlを貼り付けますが、ここでそれを行う方法がわかりません...

そうそう.. テーブル内の奇妙な colgroup と col ボックスを取り除く方法と、テーブルを正常に動作させる方法を知りたいだけです!

更新: したがって、私が html テーブルを取得しているサービスは、<colgroup>および<col>タグを含むように html テーブルを自動フォーマットすることがわかりました。フォローアップの質問があります: JTextPane は現在の html バージョンをサポートしていますか? そしてもちろん、JTextPane でこれらの奇妙なボックスを表示しないようにするにはどうすればよいでしょうか?

4

2 に答える 2

1

JTextPaneHTML 3.2のマークアップのみをサポートしているため、最新のブラウザのように新しいタグは表示されません。

HTMLを変更しようとするのではなく、Cobraなどのサードパーティライブラリを使用してコンテンツを表示できます。

HtmlPanel panel = new HtmlPanel();
new SimpleHtmlRendererContext(panel, new SimpleUserAgentContext()).navigate("http://myhost/mytable.jsp");
于 2012-11-09T23:04:29.927 に答える
0

私の解決策は、 String.replaceAll() を使用して、不要なものをすべて削除することでした。私はそれが奇妙に思えることを知っています..ブウト。今のところ。それが私の解決策です。Reimeus さん、ご回答ありがとうございます。機会があれば、あなたの解決策を検討する必要があります。

于 2012-11-14T19:25:40.813 に答える