概要
Border
にJCheckBox
やJButton
などを配置します。
サンプルコード
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解説
SwingUtilities.paintComponent
でBorder
にコンポーネントを描画しているため、JComboBox
などが選択されてもイベントが伝わりません。このためComponentTitledBorder
では、マウスリスナーを設定してComponent#dispatchEvent
メソッドで描画しているコンポーネントにマウスイベントを転送しています。
@Override public void mouseClicked(MouseEvent me) {
Component src = me.getComponent();
tgtCmp.dispatchEvent(SwingUtilities.convertMouseEvent(src, me, tgtCmp));
src.repaint();
}
参考リンク
- ComponentTitledBorder
- 参考にしていたSanthosh Kumar's Weblogに接続できなくなっている
- Borderの右下にJComponentを配置
- TitledBorderにタイトル文字列までの内余白を設定する