2012-03-21 15 views
1

以下のコードでJListコンポーネントの周りでスクロールを取得するにはどうすればよいですか?私はスイングのレイアウトの多くに覚えドントので、正常に動作する:(JavaでJScrollPaneを使用する方法

public class JButtonO extends JFrame{ 

String[] values = {"henry", "Michael","Uche","John","Ullan","Nelly", 
           "Ime","Lekan","Austine","jussi","Ossi","Imam","Empo","Austine","Becky", 
          "Scholar","Ruth", "Anny"}; 

public JButtonO() 
{ 
    super("the button"); 
    this.setSize(400,200); 
    JPanel panel = new JPanel(); 
    JLabel label = new JLabel("Output Items:"); 
    label.setAlignmentX(1); 
    label.setAlignmentY(1); 
    JList conList = new JList(values); 
    conList.setVisibleRowCount(3); 
    JScrollPane scroller = new JScrollPane(conList); 
    panel.add(label); 
    panel.add(scroller); 
    panel.add(conList); 

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.add(panel); 
    this.setVisible(true); 


} 
+0

すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –

答えて

2

見て、私は何が必要答えていないかもしれないようです。私は長い時間前にそれで仕事をドント...

しかし、それは、このコードで動作し、あなたのJPanelの上で(私が覚えている)のレイアウトを設定削除:

public JButtonO() { 
    super("the button"); 
    this.setSize(400, 200); 

    // Create a panel with a borderlayout 
    JPanel jpanel = new JPanel(new BorderLayout()); 

    JLabel label = new JLabel("Output Items:"); 
    label.setAlignmentX(1); 
    label.setAlignmentY(1); 
    // Add Label to top of layout 
    jpanel.add(label, BorderLayout.NORTH); 

    JList conList = new JList(values); 
    conList.setVisibleRowCount(3); 
    JScrollPane scroller = new JScrollPane(conList); 
    //AddScroll to center 
    jpanel.add(scroller); 

    //Add Panel to JFrame 
    this.add(jpanel); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.setVisible(true); 

    } 

私は問題はJPanelのデフォルトのlayoutmanegerだと思うので、それはあなたのスクロールをどのように動作するかの。スクロールを作成するのに十分なほどには飲まなかった...

あまりにも多くの説明がなくても助かります...

実際には:私はあなたの間違いを見ました。今私は間違っていることを説明することができます。あなたはすでにここにあなたの側JScrollPaneの内部であなたのJListを追加しました:

JScrollPane scroller = new JScrollPane(conList); 

しかし、その後、あなたはJPanelの内側にそれを置く:

panel.add(conList); 

これはyoutはJListのが表示される場所に変更し、再度JScrollが空にしましょう。コンポーネントがなければ、サイズ0x0で表示され、描画されません(存在していても)。

今私は、私は十分にあるのJPanel panelにJListのconListが含まれていることにJScrollPane scrollerを追加= D

4

を助けたと思います。 間違いは、JListをもう一度追加することです。

JScrollPane scroller = new JScrollPane(conList); 
    panel.add(label); 
    panel.add(scroller); 
    panel.add(conList); // <---THIS LINE SHOULD BE DELETED... 
2

JScrollPaneは、スクロールバーが表示されるときと言うスクロールバーのポリシーと呼ばれる設定があります。 JScrolPane(Component,int,int)コンストラクタを使用するか、setVerticalScrollBarPolicy()setHorizontalScrollBarPolicy()を呼び出して設定できます。デフォルトのポリシーは「必要に応じて」です。コンポーネントが全体を表示するには大きすぎる場合にのみスクロールバーが表示されます。したがって、リストがウィンドウの内側に収まる場合、スクロールバーは表示されませんが、表示されます。マウスを使用してウィンドウを小さくします。スクロールバーが必要な場合に常に表示できるように、一方または両方のポリシーを対応する定数を使用して「常に」に変更できます。

+0

kosmulski、お寄せいただきありがとうございます。以前の2人の貢献者が私がこの問題を解決するのを助けました。 – helpdesk

+0

@henryjosephよろしくお願いします。 –

関連する問題