Swing/ComponentTitledBorder のバックアップの現在との差分(No.1)
BorderにJComponentを配置
編集者:Terai Atsuhiro~
作成日:2006-04-10
更新日:2022-10-07 (金) 14:58:10
概要
Border
にJCheckBox
やJButton
などを配置します。
Screenshot
Advertisement
概要
BorderにJCheckBoxやJButtonなどを配置します。Santhosh Kumar's WeblogのComponentTitledBorderを利用しています。サンプルコード
#spanend
#spanadd
JCheckBox c = new JCheckBox("CheckBox", true);
#spanend
#spanadd
c.setFocusPainted(false);
#spanend
#spanadd
JLabel l1 = new JLabel("adfasdfasdfa");
#spanend
#spanadd
Border eb = BorderFactory.createEtchedBorder();
#spanend
#spanadd
l1.setBorder(new ComponentTitledBorder(c, l1, eb));
#spanend
#spanadd
View in GitHub: Java, Kotlin#screenshot
解説
-
SwingUtilities.paintComponent
でBorder
にコンポーネントを描画- 描画しているだけなので
JCheckBox
などのコンポーネントが選択されてもイベントが伝わらない - このためこの
ComponentTitledBorder
ではマウスリスナーを設定してComponent#dispatchEvent
メソッドで描画しているコンポーネントに以下のようにマウスイベントを転送
- 描画しているだけなので
サンプルコード
JCheckBox c = new JCheckBox("adfasdf", true); c.setFocusPainted(false); JLabel l1 = new JLabel("adfasdfasdfa"); l1.setBorder(new ComponentTitledBorder( c, l1, BorderFactory.createEtchedBorder()));
#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
- &jnlp;
- &jar;
- &zip;
参考リンク
- MyBlog/ComponentTitledBorder at master · santhosh-tekuri/MyBlog
- Borderの右下にJComponentを配置
- TitledBorderにタイトル文字列までの内余白を設定する