TITLE:BorderにJComponentを配置

Posted by aterai at 2006-04-10

BorderにJComponentを配置

BorderにJCheckBoxやJButtonなどを配置します。Santhosh Kumar's WeblogComponentTitledBorderを利用しています。

  • &jnlp;
  • &jar;
  • &zip;
ComponentTitledBorder.png

サンプルコード

JCheckBox c = new JCheckBox("CheckBox", true);
c.setFocusPainted(false); 
JLabel l1 = new JLabel("adfasdfasdfa");
Border eb = BorderFactory.createEtchedBorder();
l1.setBorder(new ComponentTitledBorder(c, l1, eb));

解説

上記のサンプルは、Santhosh Kumar's WeblogComponentTitledBorderを参考にして作成しています。

SwingUtilities.paintComponentでBorderにコンポーネントを描画しているため、JComboBoxなどが選択されてもイベントが伝わりません。このためComponentTitledBorderでは、マウスリスナーを設定してComponent#dispatchEventメソッドで描画しているコンポーネントにイベントを飛ばしています。

public void mouseClicked(MouseEvent me) {
  Component src = me.getComponent();
  tgtCmp.dispatchEvent(SwingUtilities.convertMouseEvent(src, me, tgtCmp));
  src.repaint();
}

参考リンク

コメント