Posted by terai at 2006-04-10
BorderにJComponentを配置
BorderにJCheckBoxやJButtonなどを配置します。Santhosh Kumar's WeblogのComponentTitledBorderを利用しています。
サンプルコード
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 WeblogのComponentTitledBorderを参考にして作成しています。
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();
}