2009-04-23 9 views
2

Java Swingでサイズ変更のドラッグハンドルを作成する方法がわかりません。私が何を意味するかわからない場合は、このウェブサイトの「Ask Question」ページを開き、テキストエリアの下部を見てください。それはあなたがエリアのサイズを変更するためにドラッグすることができますバーを持っています。私はJava Swingでこれを行う方法を探しています。私はこの点をどこから見てもわからない。Java Swingでのハンドルのドラッグ

ご協力いただければ幸いです。

+0

このリンクはありません – MahdeTo

+0

本当にJSplitPaneが必要ですか?もっと複雑な機能がほしいと思っていましたが、おそらく私は持っていないはずです。 –

+0

いいえ、必要なのはJSplitPaneだけでした。 それにかかわらず、あなたのお役に立てていただきありがとうございます。 –

答えて

9

私の意見では、Stack Overflowポスティングフォームで使用されるドラッグハンドルは、外観と機能の両方で垂直のJSplitPaneのものに最もよく似ています。

+0

まさに私が探していたもの。ありがとう。 –

0

私はそれもやっていませんが、あなたがスタートを探しているので、私はそれを撃つでしょう。

私はハンドルを表示したい場所に何らかの並べ替え(おそらくカスタムサブクラス)を配置します(私はあなたがその部分を行う十分なレイアウトマネージャを操作できると仮定しています)。次に、私はとMouseMotionListener - おそらく同じクラス、サブクラスMouseAdapter - をコンポーネントに追加します。クリックとドラッグが検出されると、ハンドルがアタッチされているコンポーネントのサイズを変更します。

これは役に立ちますか?

0

これはちょっと考えてみるとよいでしょう。

スイングでは、GUIコンポーネントは、各グラフィック要素をその場所に配置する責任を負うレイアウトマネージャ(LayoutManagers)を使用します。

要素をレイアウトするロジックがLayoutManagerごとに異なるため、これらの要素を組み合わせる必要があります。

レイアウトマネージャは通常、最小サイズ、最大サイズ、および推奨サイズが何であるかを知るためにレイアウトするコンポーネントを照会します。一部のリムはこの情報を完全に無視し、一部は部分的に使用します。

よく考えられるのは、優先サイズ(または最大)を考慮し、マウスリスナーを他の要素に追加するレイアウトマネージャを使用することです。要素がドラッグされると、コンポーネント(おそらくJTextArea)のmax/min/preffサイズをプログラム的に増減することができ、LYMがコンポーネントの視覚的な外観をリサイズできるようにします。

だから、この擬似のようになります。

public App { 

     private JComponent container; 
     private JComponent myTarget; 
     private JComponent dragComponent; 


     public void someWhere() { 
       container.setLayoutManager(someLayoutManager()); 
       container.add(myTarget); 
       container.add(dragComponent); 

       // warn: not actual method names, I don't remember them 
       dragComponent.addMouseListener(new MouseAdapter() { 
        public void mouseDragged(MouseEvent me) { 
          Point point me.getPoint(); 
          int h = myTarget.getHeight(); 
          int w = myTarget.getWidth(); 
          // Do some math to know if you have to add or subtract. 
          int movement = // -20, +20, whatever. 
          myTarget.setMaximumSize(h + (movement) , w); 
        } 
       }); 
     } 
} 

だけの擬似コードですので、私を撮影しないこと。

もう一度考えてみましょう。適切なレイアウトマネージャーを見つけ、コンポーネントがドラッグされている場所を知るためのマウスリスナーを追加することです。コンポーネントをドラッグするたびに、ターゲットコンポーネントのサイズが変更され、LayoutManagerでコンポーネントの形状が変更されます。

こちらがお役に立てば幸いです。

p.s.スイングにもdrag/dropのサポートがあります。

+0

Oooorrrr ... JSplitPane => http://bit.ly/l8doc heheheを使うことができます – OscarRyz

0

別の人が既に回答しているので、あなたがしようとしているのは、JSplitPaneを水平方向の整列に設定するだけです。スプリットバーの幅を希望のピクセルサイズに調整することができます。

関連する問題