3

ウィンドウ自体にコンポーネントを追加せずに、ユーザーがJavaでウィンドウのタイトルを変更できるようにしようとしています。私は実際にこれをで試してJInternalFrameいますが、解決策は。でも同様であるはずJFrameです。ウィンドウのタイトルバーを右クリックするとポップアップするコンテキストメニューにメニュー項目を追加したいだけです。たとえば、次のセットタイトル

ここに画像の説明を入力してください

この例はWindowsXP上にありますが、おそらくウィンドウコンテキストメニューOSを独立して取得する方法があります(ただし、アプリケーションSystemTray.getSystemTray()の個々のウィンドウの場合)。これから、ユーザーが新しいタイトルを入力するためのダイアログをポップアップするための独自の機能を提供できます。ActionListener

これは私が推測しているよりもはるかに大きなタスクですか?誰かが以前に使用したソリューションを持っていますか?

4

2 に答える 2

2

簡単な答え:これは簡単ではないと思います。それが可能かどうかは100%わかりません。

まず、JFrameとJInternalFrameは実際にはまったく異なります。JFrameはトップレベルのコンポーネントであり、そのタイトルバーなどは通常OSによって提供されます。JInternalFrameのコンテンツ全体(タイトルバーを含む)は、SwingLAFによって提供されます。

JInternalFrameの場合、コンテキストメニューは、JInternalFrame自体ではなく、LAFによって提供されます。コンテキストメニューを変更するには、UIComponentで何かを行う必要があります。これを行うには、カスタムUIコンポーネントを提供する必要があると思います。これは醜く、通常はさまざまなLAFにまたがったり、機能したりしますが、せいぜいひどいように見えます。メソッド、BasicInternalFrameTitlePaneを参照してくださいcreateSystemMenu

于 2011-06-20T16:58:33.450 に答える
1

Swingの内部UIシステムを深く掘り下げなければ、これは不可能だと思います。また、これを行うことも考えていません。JMenuBarビルトインを使ってみませんJInternalFrameか?

myInternalFrame.setJMenuBar(myMenuBar);
于 2011-06-20T16:49:59.767 に答える