tengo una lista en la que desea rellenar dinámicamente , por lo tanto la barra de desplazamiento es necesario. He añadido una barra de desplazamiento a la lista. El problema es que cuando trato de agregar a la lista a un panel. la barra de desplazamiento se hace visible en la lista, pero ellos no trabajan, incluso cuando la lista del elemento se hace más grande en tamaño.

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);
  • debería funcionar como se esperaba (ver @Robin SSCCE) – algo mal con el código no está mostrando …
InformationsquelleAutor gauravHI5 | 2012-04-07

2 Comentarios

  1. 2

    Funciona bien aquí. He utilizado el SplitPaneDemo.java archivo para este SSCCE, y despojado de todo el material innecesario

    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();
    }
    });
    }
    }
  2. 0

    Pregunta Similar aquí: aquí

    No creo que la respuesta es la misma en su caso. Tal vez el problema ocurre cuando usted añadir cosas a la lista, usted podría tratar de hacer:

    myList.revalidate();

    después de los cambios.

    • no – revalidate es nunca necesita después de un cambio de modelo (siempre que el modelo cumple con su contrato de notificaciones)

Dejar respuesta

Please enter your comment!
Please enter your name here