-2

画像例

データベース デザイナーを作成したいので、2 つのテーブル間の関係を作成するための UI も必要になる場合があります。ツール:JAVAスイング

4

1 に答える 1

0

あなたの質問に対する短い答えは、いいえです。既製のコンポーネントはありません。体を丸めて手を汚さなければなりません。

問題を分解します。

エンティティを浮動可能にする必要があります。あなたが持っている唯一の(まともな)選択肢はJLayeredPaneJDesktopPane. どちらを選択するかは、実装する機能によって異なります。私はおそらくから始めJLayeredPaneます。これにより、コンポーネントを必要な場所に配置できるようになり、Z レベルをより簡単に制御できるようになります。

これに関する問題は、コンポーネントの配置だけでなく、サイズの変更も担当することになります。

次に、エンティティ コンポーネントが必要です。

私の考えでは、これは一連の複合コンポーネントです。テーブルの名前、展開コントロール、およびそれをドラッグできる手段を提供する「ヘッダー」または「タイトル」コンポーネントが必要です。

私は単純なものから始めJPanelます。JLabelその上に、 、 a 、および aまたはJTextFieldのいずれかを追加して、私が求めていた外観に応じて、展開コントロールとして機能させます。JButtonJLabel

JLabel、ヘッダーのタイトルとして機能します。JTextField編集者としての意志。まず、テキスト フィールドを非表示にします。レイアウト マネージャーを少し巧妙に使用すると、スペース プレースに 2 つのコンポーネントを配置できます。テキスト フィールドが表示されると、ラベルの上に重ねることができます。

このコンポーネントには、マウス リスナーとマウス モーション リスナーを追加する必要があります。クリックすると、エディターが表示されます。ActionListenerとを使用してFocusListener、ユーザーがいつ編集を終了したかを判断し、ラベルを更新してエディターを非表示にします。Escおそらく、ユーザーが編集をキャンセルできるようにフィールドにa をバインドすることも必要になるでしょう。これにはキーバインドが最適です。

また、「エンティティ」の位置を変更できるように、マウス ドラッグ イベントを追跡する必要があります。

次に、このヘッダー コンポーネントがエンティティ コンポーネントに追加されます。

フィールド情報を保持するには、JListまたはが必要です。JTable私の考えでは、aJTableが最も多くの機能を提供し、フィールド情報をより簡単に編集できるようにします。

また、あるテーブルから別のテーブルへのリンクを提供するために、いくつかのカスタム ペイントを実行する必要があります。これは重要な問題であり、非常に優れた設計が必要になります。

開始するために必要なものはすべて、Creating a GUI With JFC/Swingにありますが、 Performing Custom Painting and 2D Graphicsを読んで理解する必要もあります。

于 2013-03-30T00:39:04.983 に答える