3

グラフィカルプログラミング用のユーザーインターフェイスを構築しようとしています。JUNGを使用して、図面のグラフの側面を処理したいと思います。Graphics2Dを使用してすべてのウィジェットを描画するのではなく、Swingのイベントアーキテクチャを利用するために、できるだけ頻繁にSwingウィジェットを使用したいと思います。

グラフが描画されているキャンバスをパン、ズーム、回転できるようにしたいのですが、Swingウィジェットが表示されるのに十分な大きさである限り、それらを操作する機能は保持しています。また、選択したJUNGレイアウトアルゴリズムに基づいてウィジェットを自動的にレイアウトしたいと思います。

Graphics2D図面とSwingコンポーネントを組み合わせるにはどうすればよいですか?

JComponentsがメソッドを使用して自分自身を描画することを処理することを理解していpaint()ます。私が理解するのに苦労しているのは、Graphics2D変換の影響を受け、すべてのイベント処理を保持できるSwingオブジェクトを作成する方法です。コンポーネントの画像だけを表示することはできません。コンポーネントはライブである必要があります。

paintウィジェットをサブクラス化し、親のメソッドに渡されるグラフィックスオブジェクトにAffineTransformを追加してみました。ウィジェットを回転させますが、クリッピングがオフになっているように見えます。

助言がありますか?とりあえず、できれば別のライブラリを追加しないようにしたいと思います。

4

3 に答える 3

2

JXLayerプロジェクトには、UI全体をさまざまなスケールに変換するための実装があります。

このデモをチェックしてみてください

于 2012-04-03T23:47:43.653 に答える
2

例として、それを囲む のサイズに合わせてスケーリングするようJDigit extends JButtonオーバーライドします。速度のために、コンポーネントは事前にレンダリングされたグリフを使用しますが、わずかに遅くなります。インターフェイスを実装することで、同様の結果を得ることができます。このでは、ボタンのグリッドをいくつかの事前定義されたサイズにスケーリングし、このではコンポーネントを完全に放棄して、グラフィックス コンテキストとすべてのコンテンツをスケーリングします。paintComponent()ContainerderiveFont()Icon

于 2012-04-04T01:00:27.720 に答える
1

私の調査によると、 Piccolo2Dを使用すると、Swing 要素をパンおよびズームできます。JUNG のグラフ レイアウト アルゴリズムを使用してグラフと Piccolo2D PSwing ノードをレイアウトすると、使用可能で、アルゴリズムによってレイアウトでき、ズームとパンが可能な Swing コンポーネントのグラフを生成できます。

于 2012-04-05T22:03:52.557 に答える