2012-04-07 19 views
0

私は動的に取り込みたいリストを持っているので、スクロールバーが必要です。リストにスクロールバーを追加しました。問題は、パネルにリストを追加しようとするときです。スクロールバーはリストに表示されますが、リストの要素のサイズが大きくなっても機能しません。JListにスクロールバーを追加すると、JListがJPanelに追加される

JPanel p4=new JPanel(); 
Container c=getContentPane(); 
myList=new JList(model); 
myList.setVisibleRowCount(5); 
myList.setFixedCellWidth(200); 

p4.add(new JScrollPane(myList,ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 
    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS)); 
c.add(p4); 
+0

は、期待通りに動作するはずです(ロビンのSSCCEを参照)。表示されていないコードに問題があります... – kleopatra

答えて

2

ここでうまくいきます。私はこのSSCCEためSplitPaneDemo.javaファイルを使用し、

import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.ListSelectionModel; 
import java.awt.BorderLayout; 

public class SplitPaneDemo extends JPanel { 
    private JList<String> list; 
    private String[] imageNames = { "Bird", "Cat", "Dog", "Rabbit", "Pig", "dukeWaveRed", 
     "kathyCosmo", "lainesTongue", "left", "middle", "right", "stickerface"}; 
    public SplitPaneDemo() { 
    setLayout(new BorderLayout()); 

    list = new JList<>(imageNames); 
    list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    list.setSelectedIndex(0); 

    add(new JScrollPane(list)); 
    } 

    /** 
    * Create the GUI and show it. For thread safety, 
    * this method should be invoked from the 
    * event-dispatching thread. 
    */ 
    private static void createAndShowGUI() { 

    //Create and set up the window. 
    JFrame frame = new JFrame("SplitPaneDemo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    SplitPaneDemo splitPaneDemo = new SplitPaneDemo(); 
    frame.getContentPane().add(splitPaneDemo); 

    //Display the window. 
    frame.pack(); 
    frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
    //Schedule a job for the event-dispatching thread: 
    //creating and showing this application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
     createAndShowGUI(); 
     } 
    }); 
    } 
} 
0

同様の質問ここにすべての不要なものを剥ぎ取ら:here

を、私は答えはしかし、あなたの場合も同様であるとは思いません。たぶん問題はリストに物を追加するときに起こります。試してみるといいでしょう:

myList.revalidate(); 

変更後です。

+0

** no ** **モデルの変更後に再検証は不要です**その通知契約に) – kleopatra

関連する問題