ScrollPane auf einem JPanel

Hallo alle Miteinander.

Ich versuche einer JScrollPane bezu bringen das die Elemente die ich auf Ihr ablege Scrollen soll.

DIe Struktur der Oberfläche ist so:

Ich habe ein Frame in das ich eine ScrollPane lege.
In die ScrollPane lege ich zwei Panels mit dem Namen p1 und p2.
In das Panel p2 will ich eine weitere ScrollPane legen so dass alle dort eingefügten elemente durchlaufen werden können auch wenn das fenster nicht ganz so lang ist.


Code:
Java:
public class Main {

    public static void main(String[] args) {
        javax.swing.JFrame t = new javax.swing.JFrame("Test Frame");
        t.setBounds(100, 100, 400, 400);
        t.setDefaultCloseOperation(t.DISPOSE_ON_CLOSE);
        t.setResizable(false);

        javax.swing.JScrollPane w = new javax.swing.JScrollPane();

        javax.swing.JPanel p1 = new javax.swing.JPanel();
        p1.setBounds(0, 0, 100, 360);
        p1.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0,0,0)));

        javax.swing.JPanel p2 = new javax.swing.JPanel();
        p2.setBounds(135, 0, 300, 370);
        p2.setBackground(new java.awt.Color(255,0,0));
        p2.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0,0,0)));

        javax.swing.JScrollPane wp2 = new javax.swing.JScrollPane();
        wp2.setAutoscrolls(true);        

        javax.swing.JLabel l = new javax.swing.JLabel("sdjfhsdjkfjkh");
        l.setPreferredSize(new Dimension(400, 200));
        wp2.getViewport().add(l);

        p2.add(wp2);

        w.add(p1);
        w.add(p2);

        w.setComponentZOrder(p1, 0);
        w.setComponentZOrder(p2, 0);

        t.getContentPane().add(w);

        t.setVisible(true);
    }
}

Wie gesagt die Elemente in p1 sollen fix sein. Nur der Inhalt von p2 soll Scrollbar sein.

Bei mir geht es nicht. Er bringt keinen Fehler sondern Erweiter das Label bis zu den druckbaren Bereich, anstatt ScrollBars zu bringen

Weiß jemand Hilfe!?

Gruß Nathaniell
 
Zuletzt bearbeitet von einem Moderator:
Hi Nathaniell,

hab mal versucht was zu basteln.
Ist mir leider nicht so richtig gut gelungen.
Vielleicht hilft's Dir trotzdem weiter.

Java:
public static void main(String[] args) {
           JFrame frame = new JFrame("Test Frame");
           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           frame.setLayout(new BorderLayout());

           JPanel panelMain = new JPanel();
           JPanel panel1 = new JPanel();
           JPanel panel2 = new JPanel();

           panel1.add(new JLabel("Panel 1"));
           panelMain.add(panel1);

           panel2.add(new JLabel("Panel 2"));
           JEditorPane editPane = new JEditorPane();
           panel2.add(editPane);
           JScrollPane panel2Scroller = new JScrollPane(panel2);
           panel2Scroller.setSize(300, 300);
           panelMain.add(panel2Scroller);

           JScrollPane mainScroller = new JScrollPane(panelMain);
           frame.getContentPane().add(mainScroller, BorderLayout.CENTER);

           frame.setVisible(true);
           frame.pack();

        }


Gruß
joschi
 
Danke joschi70.

Habe heraus gefunden das ich die Komponenten die ich der ScrollPane hinzufügen will gar nicht das Interface Scrollable Implementieren. D.h. es auch gar nichts nützt es so herum zu probieren.

Also werde ich versuchen das JPanel umzuschreiben so dass das neue Panel dann dieses Interface Implementiert hat in meiner eigenen Klasse.

Das wird ne Menge Arbeit. Wenn jemand ein Problem kennt warum das nicht funktionieren sollte, sollte er jetzt reden oder für immer schweigen! ;-) (*joke*)

Gruß Nathaniell
 
Hi,

so aus dem Kopf heraus:

JScrollPane sPane = new JScrollPane();
sPane.setViewPortView(componentc);

c ist denn deine Komponente die der Scrollpane anzeigen soll.
 
Zurück