SwingやAWTを使用する時にWindowsのAPIを叩きたい時にネイティブウィンドウハンドル(HWND)を取得したい場合があります。
heavweightはネイティブスクリーンリソースに紐付けられている為、HWNDが取得できますが、lightweightはネイティブに紐付けられていないため取得できません。
例えば、javax.swing.JPanel
はlightweightです。 java.awt.Button
はheavweightです。
JNAでlightweightのHWNDを取得しようとすると以下のようなエラーが出ます。
com.sun.jna.Native#getComponentPointer
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Component must be heavyweight
参考
https://www.oracle.com/technical-resources/articles/java/mixing-components.html