2016-10-26 5 views
2

プログラミングの練習では、JSplitPaneを使用して、右側のフラクタルのレンダリング、左側の他のゴミ箱のウィンドウを作成しています。しかし、私は非常に奇妙な問題に遭遇しました。左の要素は完全にうまくいっていますが、右の要素も常に左揃えになっています。私が知る限り、右の要素には画面の右側の部分のサイズが与えられますが、左の要素は常に上にあります。Java Swing:JSplitPaneの右要素の配置

私はJSplitPaneのを作成し、このようにその要素を追加します。

splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true); 

splitPane.add(sidebar, JSplitPane.LEFT); 
splitPane.add(fractalWindow, JSplitPane.RIGHT); 

frame.add(splitPane); 

私はJSplitPaneのを構築し、それにコンポーネントを追加(などsetLeftComponentとsetRightComponentを、使用)のさまざまな方法を試してみましたが、何でもIましたどちらのコンポーネントも常に左揃えにします。私は間違って何をしていますか?

EDIT:サイドバーはJPanel、フラクタルウィンドウはJPanelのサブクラスです。フラクタルウィンドウを別のJPanelに追加してsplitPaneに追加しようとしましたが、右のコンポーネントが描画されません。私はJFrameフレームのレイアウトを指定していません。

EDIT 2:解決されました。私のFractalクラスはメソッドgetX()getY()を使っていましたが、私がこれらをオーバーライドしているかどうかはわかりませんでした。通常はどちらも0を返します。つまり、JPanelは常に親コンポーネントの左上隅に配置されます。

+0

これはおそらく 'フラクタルウインドウ 'のLayoutManager –

+0

が私の答えをテストしたことが原因でしょうか? – ItamarG3

+0

1)すぐに役立つようにするには、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 2)ASCIIアート、またはGUIの*意図された*レイアウトの簡単な図を最小サイズで提供し、サイズ変更可能な場合は幅と高さを増やします。 –

答えて

2

あなたが右サイドでのJPanelを置くことを試みることができる、とあなたはJPanelのの好きな場所:その方法を

splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, true); 

splitPane.add(sidebar, JSplitPane.LEFT); 
JPanel panel = new JPanel(); 
panel.add(fractalWindow,BorderLayout.CENTER); 
splitPane.add(panel, JSplitPane.RIGHT); 

frame.add(splitPane); 

、パネルは、あなたがセンターに入れ何を揃え、および分割パネルが右側にパネルを置きます。

+0

そして私はこれが解決策だと思っています – GlacialMan

+0

私はOPもそう思うと願っています – ItamarG3

0

結局のところ、犯人は私のフラクタルクラスの二つの方法だった:これらの2つの方法がそれの親コンポーネントでのJPanelの位置を決定するために使用される、JPanelgetX()getY()を上書き

class Fractal extends JPanel { 

    ... 

    int xpos; 
    int ypos; 

    ... 

    public int getX() { 
     return xpos; 
    } 

    public int getY() { 
     return ypos; 
    } 

    ... 

} 

。これがアラインメントが正しく機能しなかった原因です。

関連する問題