2
  • .NET では、UserControlはコントロールで構成されている場合があり、フォームの一部またはより大きな UserControl の一部である場合があります。ツールボックス パレットを使用して、ビジュアル デザイナで UserControls を設計できます。

  • 私は、Java BeanFormが .NET UserControl の類似物であることを発見しました。

  • NetBeans のビジュアル デザイナで BeanForm を設計できます

  • 私のライブラリでは、他のライブラリから BeanForm を拡張でき、拡張された BeanForm を NetBeans のビジュアル デザイナで設計できます。

  • 私のメイン プロジェクトでは、すべての BeanForms をパレットからフレームに選択できます。

したがって、「BeanForm」は「UserControl」の Java ペンダントです。


.Net では、this.Region = new Region(graphicsPath) を設定するだけで、UserControl を魚や星など、好きなものに簡単に整形できます。


Java は C# ほど簡単ではないことはわかっています。必要な手順を部分的に説明している Java サンプルを見つけましたが、整形された非長方形の BeanFormサンプルは見つかりませんでした。


もちろん、MouseAdapter を新しい特別な mouseClicked(MouseEvent e) で拡張する (多くのサンプルが示唆しているように) だけでは十分ではありません。これは最初のステップにすぎません。

  • Dragged-Event、Focus Events、Mouse-Entered Event、Mouse-Up Event、Mouse-Leave Event、その他すべての典型的な JComponent イベントのことをみんな忘れてしまったのでしょうか??? - そのようなコンポーネントは、実際のシェイプされた JComponent のようには動作しません。

パレットからフレームに取り込むことができ、 REAL Shaped JComponentのように動作する OvalComponent-BeanForm のサンプルを教えてください。

楕円にフォーカスがある場合、またはマウスが楕円の上にある場合に備えて、必要なすべてのマウス イベント、必要なすべての MouseMotion イベント、すべてのドラッグ アンド ドロップ イベント、およびすべてのキー イベントをカバーする必要があります。

(たとえば、Oval の Mouse Events を使用し、Oval コンポーネントを、フレーム内で移動できる MovingOval コンポーネントに拡張できるようにする必要があります ...)


これが面倒な場合は、MouseAdapter、KeyAdapter、DragDropAdapter、または必要なものなど、実装する必要がある手順の概要と説明をお願いします。

何をすべきか教えてください!

よろしくお願いします。

4

2 に答える 2

1

Everyjava.awt.Shapeには、またはcontains()でヒット テストに使用できるメソッドがあります。MouseListenerMouseadapter

于 2012-11-26T13:33:57.067 に答える
0

さて、今のところ誰も答えていません。違う言い方をしたい。


サイズが 100x100 ピクセルの 2 つの正方形の CirclePanels (JPanel を拡張) があり、それぞれが円の形をしており、これらの 2 つのコンポーネントが赤い円と青い円を示しているとします。そして、CirclePanels が色付きの円の外側の領域で透明であると仮定しましょう。さらに、ホスティング フレームに Null-Layout があるとします。そのため、赤い円が青い円に部分的に重なっています。

これらの円を実際のコントロールのように動作させるには、少なくとも次の問題を修正する必要があります。

1.) 円の外側で円の境界に非常に近い MouseClick は、フレームの MouseListener のみをトリガーする必要があります。JPanel の MouseListener をトリガーしてはなりません。

2.) 赤の領域内の MouseClick は、赤の JPanel の MouseListener のみをトリガーする必要があります。青の JPanel の MouseListener をトリガーしてはならず、フレームの MouseListener をトリガーしてはなりません。

3.) 青の領域内の MouseClick は、青の JPanel の MouseListener のみをトリガーする必要があります。赤の JPanel の MouseListener をトリガーしてはならず、フレームの MouseListener をトリガーしてはなりません。

4.) これを実現するために必要なソース コードはすべて CirclePanel.java ファイル内にある必要があり、フレームの Java はこれらの問題を考慮してはなりません。これは、これらの形状のコントロールが任意のフレームで機能する必要があるためです。

これは、要件の説明が異なります。

誰でも、Javaでそれを行う方法を教えてください。あなたの、ジェラルド

于 2012-11-25T01:54:13.577 に答える