BorderにJComponentを配置
Total: 7068, Today: 1, Yesterday: 5
Posted by aterai at
Last-modified:
Summary
BorderにJCheckBoxやJButtonなどを配置します。
Screenshot

Advertisement
Source Code Examples
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 in GitHub: Java, KotlinDescription
SwingUtilities.paintComponentでBorderにコンポーネントを描画- 描画しているだけなので
JCheckBoxなどのコンポーネントが選択されてもイベントが伝わらない - このためこの
ComponentTitledBorderではマウスリスナーを設定してComponent#dispatchEventメソッドで描画しているコンポーネントに以下のようにマウスイベントを転送 - 動作中に
LookAndFeelが変更された場合、Borderに描画するコンポーネントはComponentTreeに含まれないので手動で更新(SwingUtilities.updateComponentTreeUI(...)を適用)する必要がある
- 描画しているだけなので
@Override public void mouseClicked(MouseEvent me) {
Component src = me.getComponent();
tgtCmp.dispatchEvent(SwingUtilities.convertMouseEvent(src, me, tgtCmp));
src.repaint();
}
Reference
- MyBlog/ComponentTitledBorder at master · santhosh-tekuri/MyBlog
- Borderの右下にJComponentを配置
- TitledBorderにタイトル文字列までの内余白を設定する