2016-05-17 54 views
0

GUIを作成していますが、問題があります。スクロールでJScrollPaneが表示されない

私はJPanelの情報を持っていて、最後にはJPanelJScrollPaneがあり、必要に応じてスクロールします。

これはコードです:

public BreadCrumpsDisplayer(JPanel father) 
{ 
    this.setBackground(new java.awt.Color(200, 200, 200)); 
    this.setPreferredSize(new java.awt.Dimension(father.getSize().width, height)); 
    javax.swing.GroupLayout MigasDePanLayout = new javax.swing.GroupLayout(this); 
    this.setLayout(MigasDePanLayout); 
    sp = new JScrollPane(this); 
    sp.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER); 
    sp.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
    for (int i = 0; i < 8; i++) { 
     JButton ab = new JButton("HHH"); 
     ab.setSize(100,50); 
     ab.setLocation(i*300, 0); 
     this.add(ab); 
    } 
    father.add(sp, java.awt.BorderLayout.PAGE_END); 
    addMouseListener(this); 
addMouseMotionListener(this); 
} 

私のクラスはJPanelです。私は色とサイズを設定します。次に、コンストラクタのビューパラメータとして自分のクラスを使ってScrollPaneを作成します。水平(ボタンが内側から見えるとき)と垂直(never)

次に、ボタンを8つ作成してパネルに配置します。

問題は私がそれらをすべて見ることができないことです。私がScrollBarを動かそうとすると動作しません。

スナップショット

enter image description here

私は、ボタンの残りの部分を見ることができない理由を知りません。

PD:私のクラスは別のJPanelのコンポーネントです。

+0

あなたはそれぞれのボタンを300の倍数の位置に配置しています。バー全体がそれよりも小さくないのですか? – threaz

答えて

4

GroupLayoutを正しく使用していないため、パネルの適切なサイズが適切ではありません。パネルにコンポーネントを追加するだけではいけません。また、GroupLayout制約を指定する必要があります。 GroupLayoutを使用しないことをお勧めします。これは、単一のレイアウトマネージャを使用するIDE用に設計されています。

ab.setSize(100,50); 
ab.setLocation(i*300, 0); 

レイアウトマネージャを使用するポイントは、レイアウトマネージャがコンポーネントのサイズ/位置を決定できるようにすることです。レイアウトマネージャを適切に使用すると、スクロールペインのスクロールバーが自動的に機能します。

FlowLayoutまたは水平BoxLayoutのいずれかを使用することをお勧めします。上記の各レイアウトの実際の例については、Using Layout ManagerのSwingチュートリアルのセクションを読んでください。

+0

私はフローレイアウトを使用し、すべてが良くなった、ありがとう! – Transy

+0

@Transy、うれしかったよ。チェックマークをクリックして回答を「受け入れる」ことを忘れないでください。そうすれば、問題が解決されたことが人々に分かります。 – camickr

関連する問題