Adicionar a JList

7 respostas
E

Bom galera, to com uma duvida meio besta.
To precisando fazer um botão qe ao ser clicado, transfira os itens selecionados de uma JList para outra, ou seja, RETIRAR de uma e ADICIONAR em outra.
Porém eu to tendo algumas dificuldades pra fazer isso.
A começar pelo fato de qe estou usando o editor de gui do netbeans, então ele vai gerando o código automático, inclusive o código de implementação das JList’s
e acaba qe pelo fato de o código ser gerado automaticamente eu não sei qual ListModel está sendo usado.
Enfim, eu só queria saber se tem como eu remover ou adicionar itens em uma jlist sem usar o ListModel, direto na própia jlist e o qe
posso fazer caso não tenha como.
Sei qe é uma parada simples, mais to passando mal pra fazer :oops:

7 Respostas

E

Pooow galera ACHO qe to quase conseguindo, mais to precisando de um empurrãozinho! Só pra tentar simplificar, eu não tenho o ListModel
das listas que eu quero adicionar e remover pqe os códigos de implementação delas foram criados pelo gerenciador de gui do netbeans,
então to tentando usar o getModel() já qe ele retorna esses modelos (que eu não sei qual é) pra mim.
Acho qe seria mais ou menos assim, mais ainda tá dando erro, quem puder ajudar agradeço desde já !

Object obj [] = jList1.getSelectedValues();
                for(int i=0;i<obj.length;i++) {
                    (jList2.getModel()).addElement( obj[i] );  
                    (jList1.getModel()).removeElement( obj[i] ); 
                }
nel

Oi!

Como não uso JList e etc, fica dificíl lhe auxiliar mais especificamente.
Entretanto, está dando erro, portanto, poste o stacktrace que podemos ajuda-lo.

Abraços.

E

Tá dando “Cannot find symbol” no addElement e removeElement, mais não sei pqe :S
Já dei o import nos pacotes do ListModel, mais continua dando cannot find symbol.
Vlw !!

nel

Erick Felix:
Tá dando “Cannot find symbol” no addElement e removeElement, mais não sei pqe :S
Já dei o import nos pacotes do ListModel, mais continua dando cannot find symbol.
Vlw !!

Cara, stacktrace é TUDO o que deu de erro.
Isso nem sempre é import mas uma variavél que não foi declarada.

Poste a classe completa que fica mais fácil.
Abraços.

E
import javax.swing.JOptionPane;
import javax.swing.event.ListSelectionListener;
import javax.swing.*;
        
/**
 *
 * @author erick.silva
 */
public class View1 extends javax.swing.JFrame {

    /** Creates new form View1 */
    public View1() {
        initComponents();
    }


    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        jScrollPane2 = new javax.swing.JScrollPane();
        jList2 = new javax.swing.JList();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jPanel2 = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        jList3 = new javax.swing.JList();
        jScrollPane4 = new javax.swing.JScrollPane();
        jList4 = new javax.swing.JList();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Bacia 1", "Bacia 2", "Bacia 3", "Bacia 4", "Bacia 5", "Bacia 6", "Bacia 7", "Bacia 8", "Bacia 9" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane1.setViewportView(jList1);

        jScrollPane2.setViewportView(jList2);

        jButton1.setText(">");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText(">>");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("<");

        jButton4.setText("<<");

        jButton5.setLabel("Executar Backup");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jButton5, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(32, 32, 32)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jButton3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton2, 0, 0, Short.MAX_VALUE)
                            .addComponent(jButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE))
                        .addGap(34, 34, 34)
                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(28, 28, 28))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(41, 41, 41)
                        .addComponent(jButton1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButton2)
                        .addGap(43, 43, 43)
                        .addComponent(jButton3)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(32, 32, 32)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 169, Short.MAX_VALUE)
                            .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 169, Short.MAX_VALUE))))
                .addGap(46, 46, 46)
                .addComponent(jButton5, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(49, 49, 49))
        );

        jTabbedPane1.addTab("Bacia", jPanel1);

        jList3.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "Sub-Bacia 1", "Sub-Bacia 2", "Sub-Bacia 3", "Sub-Bacia 4", "Sub-Bacia 5", "Sub-Bacia 6", "Sub-Bacia 7", "Sub-Bacia 8", "Sub-Bacia 9", "Sub-Bacia 10", "Sub-Bacia 11", "Sub-Bacia 12", "Sub-Bacia 13", "Sub-Bacia 14", "Sub-Bacia 15", "Sub-Bacia 16", "Sub-Bacia 17", "Sub-Bacia 18", "Sub-Bacia 19", "Sub-Bacia 20", "Sub-Bacia 21", "Sub-Bacia 22", "Sub-Bacia 23", "Sub-Bacia 24", "Sub-Bacia 25", "Sub-Bacia 26", "Sub-Bacia 27", "Sub-Bacia 28", "Sub-Bacia 29", "Sub-Bacia 30", "Sub-Bacia 31", "Sub-Bacia 32", "Sub-Bacia 33", "Sub-Bacia 34", "Sub-Bacia 35", "Sub-Bacia 36", "Sub-Bacia 37", "Sub-Bacia 38", "Sub-Bacia 39", "Sub-Bacia 40", "Sub-Bacia 41", "Sub-Bacia 42", "Sub-Bacia 43", "Sub-Bacia 44", "Sub-Bacia 45", "Sub-Bacia 46", "Sub-Bacia 47", "Sub-Bacia 48", "Sub-Bacia 49", "Sub-Bacia 50", "Sub-Bacia 51", "Sub-Bacia 52", "Sub-Bacia 53", "Sub-Bacia 54", "Sub-Bacia 55", "Sub-Bacia 56", "Sub-Bacia 57", "Sub-Bacia 58", "Sub-Bacia 59", "Sub-Bacia 60", "Sub-Bacia 61", "Sub-Bacia 62", "Sub-Bacia 63", "Sub-Bacia 64", "Sub-Bacia 65", "Sub-Bacia 66", "Sub-Bacia 67", "Sub-Bacia 68", "Sub-Bacia 69", "Sub-Bacia 70", "Sub-Bacia 71", "Sub-Bacia 72", "Sub-Bacia 73", "Sub-Bacia 74", "Sub-Bacia 75", "Sub-Bacia 76", "Sub-Bacia 77", "Sub-Bacia 78", "Sub-Bacia 79", "Sub-Bacia 80", "Sub-Bacia 81", "Sub-Bacia 82", "Sub-Bacia 83", "Sub-Bacia 84", "Sub-Bacia 85", "Sub-Bacia 86", "Sub-Bacia 87", "Sub-Bacia 88", "Sub-Bacia 89", "Sub-Bacia 90", "Sub-Bacia 91", "Sub-Bacia 92", "Sub-Bacia 93", "Sub-Bacia 94", "Sub-Bacia 95", "Sub-Bacia 96", "Sub-Bacia 97", "Sub-Bacia 98", "Sub-Bacia 99" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jScrollPane3.setViewportView(jList3);

        jScrollPane4.setViewportView(jList4);

        jButton6.setText(">");
        jButton6.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton6ActionPerformed(evt);
            }
        });

        jButton7.setText(">>");

        jButton8.setText("<");

        jButton9.setText("<<");

        jButton10.setLabel("Executar Backup");

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(jButton10, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(32, 32, 32)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(jButton8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(jButton7, 0, 0, Short.MAX_VALUE)
                            .addComponent(jButton6, javax.swing.GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE))
                        .addGap(34, 34, 34)
                        .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(28, 28, 28))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(41, 41, 41)
                        .addComponent(jButton6)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButton7)
                        .addGap(43, 43, 43)
                        .addComponent(jButton8)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jButton9, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGap(32, 32, 32)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 169, Short.MAX_VALUE)
                            .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 169, Short.MAX_VALUE))))
                .addGap(46, 46, 46)
                .addComponent(jButton10, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(49, 49, 49))
        );

        jTabbedPane1.addTab("Sub-Bacia", jPanel2);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 413, Short.MAX_VALUE)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 413, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 360, Short.MAX_VALUE)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 360, javax.swing.GroupLayout.PREFERRED_SIZE)
        );

        pack();
    }// </editor-fold>

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    if(jList1.isSelectionEmpty()) {JOptionPane.showMessageDialog(null, "No items selected","info", JOptionPane.INFORMATION_MESSAGE);} 
            else{ Object obj [] = jList1.getSelectedValues();
                for(int i=0;i<obj.length;i++) {
                    jList2.getModel().addElement(obj[i]);
                    jList1.getModel().removeElement( obj[i] );  
                }
        }
        
}

    private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {

}

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
       jList2.add(jList1);
    }


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

            public void run() {
                new View1().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton10;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JButton jButton4;
    private javax.swing.JButton jButton5;
    private javax.swing.JButton jButton6;
    private javax.swing.JButton jButton7;
    private javax.swing.JButton jButton8;
    private javax.swing.JButton jButton9;
    private javax.swing.JList jList1;
    private javax.swing.JList jList2;
    private javax.swing.JList jList3;
    private javax.swing.JList jList4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JScrollPane jScrollPane4;
    private javax.swing.JTabbedPane jTabbedPane1;
    // End of variables declaration
}

Foi mal, não sei direito como postar o erro quando ele só aparece sublinhado em uma parte do código no netbeans.
De qualquer forma a classe principal é essa, não creio qe ela seja de mta ajuda por ter sido gerada pelo netbeans por isso tantas linhas de código.
O principal é só alii no Button1ActionPerformed mesmo, só quero saber como adicionar elementos na jlist usando apenas o getModel().
O erro mostrados em addElement e removeElement é :

“Cannot find symbol
symbol: method addElement(java.lang.Object)
location: interface javax.swing.ListModel”

nel

Oi!

Acredito que seu erro esteja por aqui:

else{ Object obj [] = jList1.getSelectedValues(); for(int i=0;i<obj.length;i++) { jList2.getModel().addElement(obj[i]); jList1.getModel().removeElement( obj[i] ); }

Você está pegando um objeto javax.swing.ListModel e dando um addElement.
Fui ler a API do javax.swing.ListModel e não consta esse método na respectiva interface, por isso seu erro.

Altere o tipo da interface e/ou classe de implementação que creio que soluciona o seu problema.
A Default List Model possui o método que você precisa, mas tem um milhão de posts aqui no GUJ dizendo para não usar DefaultListModel ou DefaultTableModel, já não sei mais rs. Enfim, pesquise.

A DefaultListModel é uma interface filha de javax.swing.ListModel, portanto, podes usar sem medo.

Abraços.

E

Éeee vou dar uma olhada aqui, brigadão cara !
Realmente considerei por várias vezes usar o DefaultListModel, só qe ai eu teria qe fazer sem usar o editor de gui do netbeans e a
visualização não ficaria tão boa. Porém, não adianta eu ter uma visualização legal se o programa não funcionar né ? hehehe
Brigadão msm.
Abrss!

Criado 2 de agosto de 2011
Ultima resposta 2 de ago. de 2011
Respostas 7
Participantes 2