概要

BorderJCheckBoxJButtonなどを配置します。Santhosh Kumar's WeblogComponentTitledBorderを利用しています。

サンプルコード

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));
view all

解説

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

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

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

参考リンク

コメント