Swing/ComponentTitledBorder のバックアップの現在との差分(No.7)
TITLE:BorderにJComponentを配置
Posted by terai at 2006-04-10
BorderにJComponentを配置
BorderにJCheckBoxやJButtonなどを配置します。Santhosh Kumar's WeblogのComponentTitledBorderを利用しています。- category: swing folder: ComponentTitledBorder title: BorderにJComponentを配置 tags: [Border, TitledBorder, JCheckBox, JButton] author: aterai pubdate: 2006-04-10T12:01:31+09:00 description: BorderにJCheckBoxやJButtonなどを配置します。 image:
概要
Border
にJCheckBox
やJButton
などを配置します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
#screenshot
サンプルコード
#spanend
#spandel
JCheckBox c = new JCheckBox("adfasdf", true);
#spanend
#spandel
c.setFocusPainted(false);
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JCheckBox c = new JCheckBox("CheckBox", true);
#spanend
#spanadd
c.setFocusPainted(false);
#spanend
JLabel l1 = new JLabel("adfasdfasdfa");
Border eb = BorderFactory.createEtchedBorder();
l1.setBorder(new ComponentTitledBorder(c, l1, eb));
解説
上記のサンプルでは、Santhosh Kumar's WeblogのComponentTitledBorderを利用しています。解説
-
SwingUtilities.paintComponent
でBorder
にコンポーネントを描画- 描画しているだけなので
JCheckBox
などのコンポーネントが選択されてもイベントが伝わらない - このためこの
ComponentTitledBorder
ではマウスリスナーを設定してComponent#dispatchEvent
メソッドで描画しているコンポーネントに以下のようにマウスイベントを転送
- 描画しているだけなので
#spanend
#spanadd
@Override public void mouseClicked(MouseEvent me) {
#spanend
Component src = me.getComponent();
tgtCmp.dispatchEvent(SwingUtilities.convertMouseEvent(src, me, tgtCmp));
src.repaint();
#spanadd
}
#spanend
#spanadd
参考リンク
参考リンク
- MyBlog/ComponentTitledBorder at master · santhosh-tekuri/MyBlog
- Borderの右下にJComponentを配置
- TitledBorderにタイトル文字列までの内余白を設定する