2012-04-12 7 views
1

Ich habe eine Klasse, die ein JPanel erweitert. Code unten:JScrollPane erscheint nicht auf geerbtem JPanel

public class Test extends JPanel implements Testnterface { 
    private JScrollPane listScroller; 

    DefaultListModel model; 
    private JList requestList;  
    public Test() { 

     String title = "Stackoverflow Question"; 
     setBorder(BorderFactory.createTitledBorder(title)); 
     model = new DefaultListModel(); 
    requestList = new JList(); // create a list 
     listScroller = new JScrollPane(requestList); // create a scrollbar to the list 
     listScroller.setPreferredSize(new Dimension(250, 80)); 

     setLayout(null); 
     add(listScroller); // even though I add the scrollPane, nothing is displayed 
    } 
} 

Ich habe den Code aktualisiert. Ich kann meinen JScrollPane anscheinend nicht auf meinem JPanel erscheinen lassen, obwohl ich ihn hinzufüge. Hat jemand irgendwelche Ideen?

+0

'setLayout (null);' Dieser Teil des Problems ist fast sicher. Ich werde weiter darauf eingehen, wenn Sie einen SSCCE veröffentlichen. –

+0

setLayout (null) wird verwendet, damit ich die Komponenten grafisch mit einem Design Builder anpassen kann. –

+1

* "setLayout (null) wird verwendet, damit ich kann .." * ..break die GUI dann kommen zu SO für Hilfe? *** Verwenden Sie Layouts! *** Nebenbei bemerkt, die meisten "Design-Builder" wert, Support-Layouts zu verwenden. –

Antwort

3

hatte ich das gleiche Problem und es gelöst Bildlauffenster mit JPanel durch Umwickeln:

final JScrollPane jScrollPane = new JScrollPane(list, 
    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 

final JPanel panel = new JPanel(new BorderLayout(BORDER_SIZE, BORDER_SIZE)); 
panel.setBorder(BorderFactory.createEmptyBorder(BORDER_SIZE, BORDER_SIZE, 
     BORDER_SIZE, BORDER_SIZE)); 

panel.add(jScrollPane); 
Verwandte Themen