3

かなり複雑なJTableサブクラス(WidgetTableおよびそのWidgetTableModel)があり、テスト目的でダミーのJPanelに追加すると正常に機能します。

私はLayoutManagerを操作するのが非常に怖いのですべてのレイアウト作業にNetBeansの組み込みGUIビルダーを使用するのが好きです。それから私は通常、自動生成された(GUIビルダー)コードをコードアラウンドするだけで、それは常に私のために働いてきました。それは両方の長所です。プレゼンテーションを思い通りに見せることができ、コンポーネントをきめ細かく制御することもできます。

ただし、GUIビルダーツールを使用してテーブルを作成したことはありません。昨夜しばらくそれをいじくり回した後、それはかなり基本的な(行の固定数、列の固定数など)JTablesを作成するためだけに適しているように見えます。

WidgetTableは実際には、行と列の両方の動的な数、特別なエディター/レンダラー、および他の多くのベルとホイッスルを持っています。

私の問題:

相反する制約が2つあります。(1)GUIビルダーを使用して、コンテナー内の希望する場所にテーブルを正確に配置およびサイズ変更する必要があります、(2)GUIビルダーで使用できるテーブルコンポーネントは基本的すぎて処理できません。WidgetTable

GUIビルダーを使用してコンテナーに「テーブルプレースホルダー」を設計する方法が必要です。NetBeansがそのプレースホルダーコードを自動生成したら、コードを微調整して、WidgetTables代わりに動的にインスタンス化するように指示し、その場所とサイズを消費します。取り上げるプレースホルダーコンポーネントを定義しました。

このようにして、私は自分のケーキを持って、それも食べることができます。JComponents唯一の問題は、GUIビルダーが、抽象をドラッグアンドドロップし、配置してサイズを変更し、コードベースの他の場所にサブクラスをプラグインするこの機能をサポートしていないと思います。

誰かが以前にこの問題を抱えているか、興味深い推奨事項がありますか?最善の方法は、袖をまくり上げてLayoutManagerを学ぶことだと思いますが、私は主にサーバー側の開発者であり、青い月に一度だけクライアント側にやって来ます。そして正直なところ、GroupLayoutとその不吉ないとこたちの複雑さと厄介さを学ぶエネルギーがありません。

助けてくれてありがとう!

4

3 に答える 3

3

GUIビルダーを使用してJTableを挿入し、そのモデルプロパティをデフォルト値にリセットし、次のように構築コードを微調整します。

jTable1 = new WidgetTable(this.widgetTableModel);

JTableを右クリックし、[コードのカスタマイズ]を選択し、最初のコンボボックスで[デフォルトコード]ではなく[カスタム作成]を選択し、コンストラクター呼び出しのコードを入力することで、作成コードを微調整できます。

jTable1変数をではWidgetTableなく型にする必要がある場合JTableは、同じダイアログボックスで「変数宣言コード」を編集します。

于 2011-08-24T14:42:22.417 に答える
1

NetBeansでは、UIを構築するためのカスタムコンポーネントを作成することもできます。これは、WidgetTableに入れたいよりも手間がかかる場合がありますが、カスタムコンポーネントを使用してより多くのUIを構築する必要があると思われる場合は、学習する価値があります。

于 2011-08-24T16:00:29.837 に答える
0

私はいつもこれをします。GUIエディターで使用するサブクラス化されたJTableがあり、それは動的です。

  1. GUIエディターと選択したレイアウトを使用して、プロジェクトにJTableを追加します。
  2. テーブルが追加されたら、テーブルを右クリックしてカスタムコードをクリックします。
  3. JTableのコンストラクターで、 。new WidgetTable(new WidgetModel())の代わりにsayに変更しnew JTable(new DefaultTableModel())ます。
  4. WidgetTableのグローバル変数を作成します。何かのようなものprivate WidgetTable widgetTable;
  5. コンストラクターでは、initComponents()を呼び出した後、JTableをウィジェットテーブルにキャストし、それを今後使用します。`widgetTable =(WidgetTable)jTable1;
于 2011-08-24T20:37:46.467 に答える