1

スクロール可能でスケーラブルな(ズーム可能な)ビューを持つアプリケーションを作成しています。このビュー内に他のコンポーネントを配置したいと思います(それらのほとんどはカスタマイズされたJPanelsとJInternalFrames)。

フォントや境界線などの要素、およびボタンなどのサブ要素は、スケーラブルである必要はありません。コンテナコンポーネントの寸法と位置のみを指定する必要があります。

スケーラブルなコンポーネントを実装するための良い方法は何だと思いますか?

編集:私はすべてのコンポーネントを含むレイアウト全体のサイズ変更について話している。ズーム機能を備えたビジュアルUMLエディタなどを考えてみてください。

私の選択肢は次のとおりです。

  • カスタムレイアウトマネージャーを作成します。
  • カスタムのサイズ変更可能なサブコンポーネントを作成します。
  • サブコンポーネントのサイズ変更を処理するカスタムコンテナを作成します。
  • 他に何かしますか?

考えられる問題:

  • ボイラープレートコード;
  • コンポーネントの追加のカスタムプロパティへのアクセスを提供する必要性。
  • コード内のコンポーネントの単純な(一貫性のない)表現ではありません。
  • 他に何かありますか?
4

4 に答える 4

1

カスタムレイアウトマネージャーを作成することでそれを行いました。フレーム上のすべてのコンポーネント (またはコンポーネント クラス) には、コンテナーのサイズが変更されたときにサイズが変更されるかどうかに関係なく、マーカーがあります (たとえば、テーブルのサイズが変更され、ボタンのサイズは変更されません)。サイズ変更されていないものは、コンテナーのサイズ変更時に移動されます。

これは、手動設定なしでサイズ変更可能なフォームを作成するために使用されます。つまり、フォームは各コンポーネントの x/y/長さ/幅を指定するだけで定義されます (それ以上の配置情報はありません)。

于 2009-06-23T12:07:58.747 に答える
0

元のレイアウトに触れなくても問題なく機能する同様のソリューションを開始しました。

次のように簡単です。

// Install scalable layout and CTRL+/CTRL- keys for scaling operations
ScalableLayoutUtils.installScalableLayoutAndKeys(new DefaultScalableLayoutRegistry(),  frame, 0.1);

まだ作業中ですが、次の「utils4swing」バージョンの一部としてすぐに利用できるようになります。

于 2009-07-18T08:11:24.597 に答える