Axel Richter: Liste scrollen

Beitrag lesen

Hallo,

Ich habe eine JList in meinem Programm, die scrollbar sein soll falls der inhalt darin nicht mehr auf den Bildschirm passt. Ich habe versucht die JList einfach in eine JScrollPane einzubetten, aber jetzt verschwindet die JList vom Bildschirm...

Kann mir jemand helfen?


JFrame frame = new JFrame();
(...)

liste1 = new JList(ausgabe);
frame.getContentPane().add(new JScrollPane(liste1));
liste1.setBounds(50,60,350,500);

Du setzt hier die absolute Position, die Breite und die Höhe der Liste _im_ JScrollPane. Wäre es nicht logischer die absolute Position, die Breite und die Höhe des JScrollPanes zu bestimmen?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyJList extends JFrame {

public MyJList() {
        super("JList Sampler Demo");
        initList();
    }

public void initList() {
        String[] ausgabe = {"A", "B", "C", "D", "E", "F", "G", "H",

"I", "J", "K", "L", "M", "N", "O", "P"};
        JList liste1 = new JList(ausgabe);
        Container cp = this.getContentPane();
        cp.setLayout(null);
        JScrollPane jsp = new JScrollPane(liste1);
        jsp.setBounds(50,100,50,100);
        cp.add(jsp);
    }

public static void main(String[] args) {
        JFrame frame = new MyJList();
        frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });

frame.pack();
        frame.setSize(300,300);
        frame.setVisible(true);
    }
}

Andererseits: Warum man überhaupt mit setBounds absolut positionieren muss, habe ich nie verstanden. Beschäftige Dich mit den LayoutManagern http://java.sun.com/j2se/1.3/docs/api/java/awt/LayoutManager.html und verpasse dem contentPane Deines Frames einen passenden.

viele Grüße

Axel