Jump to content
Sign in to follow this  
amvm

Ajustar JList ao JPanel

Recommended Posts

amvm

Boas... Não estou conseguindo mudar o tamanho de um Jlist? tentei o setPreferredSize(): altera normalmente na horizontal, mas verticalmente só altera até um certo ponto :/

Não sei se influencia o facto de a JList estar inserida num JPanel. O meu objectivo é redimensionar a JList em relação ao JPanel.

cumps

Share this post


Link to post
Share on other sites
Knitter

Coloca a JList dentro de um JScrollPane e esse JScrollPane dentro do JPanel. Esta é a configuração adequada para que tenhas barras de deslocalmento, e deverá resolver o problema do ajuste.

Se quiseres apenas ajustar, verifica o layout do JPanel porque esse é que estará a afectar o tamanho da JList. O preferedSize é apenas uma medida para um tamanho que a JList diz querer, mas não tem necessariamente de ser respeitado. Normalmente o layout dos contentores, neste caso do JPanel, é que afecta o tamanho dos componentes dentro deles. Um CenterLayout irá usar toda a "area" definida, ignorando o tamanho do componente, o FlowLayout irá tentar respeitar o tamanho do componente mas irá colocar o componente no centro do contentor. Os vários layouts afectam a posição dos componentes de formas diferentes.

Share this post


Link to post
Share on other sites
amvm

Desapareceram os JList's xD

  JList lista1 = new JList(modelo1);
  
        lista1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        lista1.setPreferredSize(new Dimension(336, 400));
        setEstiloLista(lista1); //define configurações a nivel de cor da jlist
        JScrollPane jsp1 = new JScrollPane(lista1);
        jsp1.setBounds(400, 10, 130, 120);
        jsp1.add(lista1);
       painelLista1.add(jsp1);
        painelLista1.setBorder(BorderFactory.createTitledBorder("Jogos Terminados"));

o JPanel que estou a usar tem um layout de GridLayout... neste caso tava a colocar duas JList's uma ao lado da outra ;)

Share this post


Link to post
Share on other sites
Knitter

Estás a adicionar a lista ao scroll duas vezes, uma no construtor outra com o método add(), este último precisa ser seguido de uma definição ao viewport através do método setViewportView()... remove a chamada ao método add().

Um exemplo:


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

public class Demo extends JFrame {

    private JList esquerda;
    private JList direita;

    public Demo() {
        super("JList Demo");

        init();
    }

    private void init() {
        String[] elems1 = new String[]{"Elemento 1", "Elemento 2", "Elemento 3", "Elemento 4"};
        String[] elems2 = new String[]{"Elemento 5", "Elemento 6"};

        esquerda = new JList(elems1);
        direita = new JList(elems2);

        JPanel base = new JPanel(new FlowLayout());

        JScrollPane scp = new JScrollPane(direita);
        base.add(scp);

        scp = new JScrollPane(esquerda);
        base.add(scp);

        Dimension tamanho = new Dimension(640, 480);
        //
        setLayout(new BorderLayout());
        setSize(tamanho);
        setPreferredSize(tamanho);
        setLocationRelativeTo(null);
        //
        getContentPane().add(base, BorderLayout.CENTER);
    }

    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new Demo().setVisible(true);
            }
        });
    }
}

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.