1

私が所属するチームは、Java プラットフォームでのフォームの視覚的な継承に関して問題を抱えています。

いくつかのコントロールを含むベース JFrame を開発し、そのベース JFrame からフォームを継承したいと考えています。Netbeans 6.1 の設計者は、基本フォームのコントロールを継承されたフォームに描画しないため、希望どおりに使用できません。実行時に、継承されたフォームは親のコントロールとともに適切に描画されます。

Netbeans デザイナー

誰かがそれを解決しましたか?IDE を変更する必要がありますか?

4

3 に答える 3

2

私の知る限り、マティスは継承されたフォームを作成するように実際には設計されていません。これは合成用に設計されています (つまり、カスタム JComponent を作成し、Matisse Form にドロップします)。

フォーム デザイナーは、Java ファイルを使用してフォームを作成するのではなく、「フォーム」ファイルを使用します。これは継承されません。絶対に継承を使用する必要がある場合 (これはお勧めしません)、「フォーム」ファイルの内容を子クラスにコピーする必要があります。

一般に、(Matisse を使用するかどうかに関係なく) 何らかのカスタム JPanel を作成し、このフォームを JFrame にドロップする必要があります。再利用が必要なカスタム コード/イベントは、JFrame にアタッチする必要があり、Bean で作成してからフォームに追加する必要があります。

Netbeans 7 では、Matisse のコード生成の改良が検討されています。これをwww.netbeans.orgで拡張リクエストとして提出することをお勧めします。

于 2008-11-21T18:46:15.197 に答える
1

あなたの状況に対する本当の答えではなく、単なる一般的なコメントです-ビジュアルコンポーネントは継承用に作成されていません。たとえば、Sun が Component からすべてを継承して作った恐ろしい大失敗を見てください。これで、項目を追加するために .add() を使用できない JList ができました。スーパークラスのコントラクト全体を満たすことができない限り (そして、継承よりも構成を好むクラスをいくつか知っているだけです)。実行する予定のメソッドと、コンポーネントを直接変更しないことを明示的に宣言した「Component getAsComponent()」メソッドを公開します。「誰かが自分のコンポーネントに add(JLabel) を使用した場合、どうすればよいですか? または setLayout()?」 と考えるよりも、はるかに簡単だと思います。

あなたの特定の苦境について - 私は IntelliJ IDEA で JFormDesigner を使用していますが、それも当てはまるかもしれません。JFD には、コンポーネントの BeanInfo 情報を使用する優れた方法があります (「MyThingy」という名前のコンポーネントの場合、情報クラスは「MyThingyBeanInfo」になります)。そのクラスを使用すると、特別な描画方法やその他の機能とともに、設計時のみに消費される多くのものを定義できます。

于 2008-11-21T16:32:49.333 に答える