このタイトルは私の問題を最もよく説明していないかもしれません。Netbean GUI ビルダーを使用して、JFrame といくつかの JPanel を作成しています。各 JPanel を個別のクラスで作成し、JPanel クラスを JFrame にドラッグします。問題は、JPanel を JFrame にドラッグした後、JPanel にコンポーネントを追加すると、JFrame に含まれる JPanel に追加のコンポーネントが表示されないことです。「クリーンアンドビルド」を試みましたが、新しいコンポーネントがまだ JFrame -> JPanel に表示されません。
3 に答える
Matisse は、パレットに追加したすべてのコンポーネントのキャッシュ コピーを保持します。そのため、その後の変更は自動的に取得されません。変更を取得するには:
- JFrame ソースを保存して閉じます
- JPanel コンポーネントがコンパイルされていることを確認します。
- クリック
Tools > Palette > Swing/AWT Components
- ツリーを右クリックして選択します
Refresh
- JFrame コンポーネントを開きます。更新されたコンポーネントが表示されるはずです
あなたが言っていることがわかります; Matisse (NetBeans の GUI エディタ) を使用すると、自己アセンブルされたコンテナ (JPanels など) を他のコンテナ (JFrame など) にドラッグ アンド ドロップできますが、前者でのその後の変更は後者には反映されません。残念ながら、私の知る限り、それが機能する方法です。
これが、Matisse が素早いプロトタイピングやいじり回しにしか使えないと私が考える理由の 1 つです。深刻な場合は、GUI を手作業でコーディングする必要があります。
同じ問題があった場合、あなたがしなければならないことは次のとおりです。
1) 新しい JPanel サブコンポーネントを再コンパイルする
2) 親 JPanel に関連付けられたフォームを閉じる
3) プロジェクト ツリーから親 Jpanel を再度開く
更新されたサブパネルが表示されるはずです。Matisse は、フォームを開くか、新しいサブパネルを追加するときにのみ、サブパネルをレンダリングします。したがって、サブパネルを削除して再度追加せずに表示を更新する唯一の方法は、サブパネルを閉じて再度開くことです。