2

ユーザーがJPanelに描画されている線をマウスオーバーしたり、右クリックしたりできるようにするアプリケーションがあります。すべての動作を処理するオブジェクトの一部として行を実装することを完全に期待していますが、下の図に示す行を実装する方法について、より基本的な質問があります。まず、写真:

2つのシャーシ間の矢印

私は問題なく線自体を描くことができますが、それは現在paintComponent()、親のオーバーライドされた呼び出しで行われているだけJPanelです。私はこれをどのように扱うかについてのアイデアの基本を持っています:

public class ChassisLink extends JComponent implements MouseListener
{
  //Rectangle  to handle mouse-over and right-click for each segment?
    public ChassisLink()
{
    initializeLink();
}

private void initializeLink()
{
    //Init stuff
}

@Override
public void paintComponent(Graphics g)
{
    super.paintComponent(g);
                //Paint the line(s)
}
        //MouseListener events...
//When mouse-over on the line, display a tooltip
//When right clicking, display a different dialog
}

私が理解していないと思う問題は、マウスオーバーまたはクリックポイントチェックを行う方法です。長方形を使用して、矢印の三角形の部分を単に無視して、マウスが現在その長方形に含まれているかどうかを確認しますか?私はそれについて完全に楽観的です。次に、私の問題は、シャーシオブジェクトを含む既存のJPanelの上にこれらのリンクオブジェクトをどのように表示するかということです。の候補のように聞こえますが、JLayeredPaneそのパスの確認はありますか?

とにかく、私は人々が私に与えることができるどんな入力にも感謝します。少し漠然としていることがあれば、遠慮なく詳細な説明を求めてください。

ありがとう、

-リッチ

4

1 に答える 1

2

あなたは正しい方向に進んでいます。Rectangleの代わりにAreaを使用することをお勧めします-その方法でも矢印を取得でき、AreaはAffineTransformsを使用して非常に簡単に操作できます。

于 2012-05-24T18:23:24.603 に答える