TITLE:Htmlタグで文字列を修飾

Posted by terai at 2004-07-05

Htmlタグで文字列を修飾

Htmlタグを使ってSwingコンポーネントで使用する文字列を修飾します。

  • &jnlp;
  • &jar;
  • &zip;

#screenshot

サンプルコード

public class TestModel extends DefaultTableModel {
  private static final String[] columnNames = {
    "<html><p>No.</p><p><font color=blue>Number</font></p></html>",
    "<html>Name<p><font color=\"red\">etc.</font></p></html>",
    "<html><font color='green'>Comment</font></html>"
  };
  //......

解説

上記のサンプルでは、JTableのヘッダとJTabbedPaneのタブにhtmlタグを使用しています。<p>タグなどで簡単に改行するとこができます。

整形式(Well-Formed)になっていなくても、ある程度なら大丈夫なようです。属性も、エスケープした"や、'で囲んでいなくても認識されます。

参考リンク

コメント

  • メモ: Bug ID: 6670274 Incorrect tab titles for JTabbedPane if using HTML (BasicTabbedPanelUI problem) -- terai
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class bug6670274x {
      private static void createGui() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        final JTabbedPane pane = new JTabbedPane();
        pane.add("one", new JLabel("1"));
        pane.add("<html>Title broken<BR>across 2 lines</html>", new JLabel("2"));
        pane.add("three", new JLabel("3"));
        JPanel p = new JPanel(new BorderLayout());
        p.add(pane);
        p.add(new JButton(new AbstractAction("setTitleAt: 0") {
          @Override public void actionPerformed(ActionEvent e) {
            pane.setTitleAt(0, "<html>setTitleAt:0<BR>xxxxx</html>");
          }
        }), BorderLayout.NORTH);
        frame.add(p);
        frame.setSize(640, 200);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
      }
      public static void main(String[] args) throws Exception {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() { bug6670274x.createGui(); }
        });
      }
    }