JList akcja na zaznaczenie elementu

0

Jak nazywa się event na zaznaczenie któregoś z elementów w JList? Nigdzie nie mogę tego znaleźć...

0

Owszem, szukałem dokładniej w tej samej dokumentacji do której podałeś link. I nadal nie wiem co mam wybrać w NetBeansie bo nie ma niczego co nazywa się listSelection*.
Który event mam niby wybrać?

user image

1

valueChanged...
Jakbyś przejrzał przykład, który załączyłem to byś wiedział.

class SharedListSelectionHandler implements ListSelectionListener {
        public void valueChanged(ListSelectionEvent e) {
            ListSelectionModel lsm = (ListSelectionModel)e.getSource();
 
            int firstIndex = e.getFirstIndex();
            int lastIndex = e.getLastIndex();
            boolean isAdjusting = e.getValueIsAdjusting();
            output.append("Event for indexes "
                          + firstIndex + " - " + lastIndex
                          + "; isAdjusting is " + isAdjusting
                          + "; selected indexes:");
 
            if (lsm.isSelectionEmpty()) {
                output.append(" <none>");
            } else {
                // Find out which indexes are selected.
                int minIndex = lsm.getMinSelectionIndex();
                int maxIndex = lsm.getMaxSelectionIndex();
                for (int i = minIndex; i <= maxIndex; i++) {
                    if (lsm.isSelectedIndex(i)) {
                        output.append(" " + i);
                    }
                }
            }
            output.append(newline);
            output.setCaretPosition(output.getDocument().getLength());
        }
    }
0

Gów.. za przeproszeniem bym wiedział. W ogóle nie jesteście pomocni. Jedynie linki do dokumentacji potraficie wklejać albo kody co robią zupełnie co innego. Po co w tym temacie kod do zmiany slectionMode? Po co to podforum w ogóle skoro na każde pytanie odpowiedzią jest dokumentacja. Gdybym znał chociaż połowę komend z tego co mi wkleiłeś to może by mi ona pomogła. Nic nie rozumiem z tego kodu już od samego początku. Mam tworzyć klasę w klasie? NetBeans dodaje wszystkie metody w jednej klasie - tej która dziedziczy JFrame i nie da się do niej dodać (implements) interfejsu ListSelectionListener. Potrzebowałem pomocy w prostej rzeczy, żeby program wypisywał cokolwiek, choćby w konsoli np. który element JListy jest zaznaczony to bym sobie już dalej poradził ale dostaje jakieś cuda. Pier... to, ide oglądać mecz, najwyżej w trybie poprawkowym to zalicze.

1

przecież odpowiedziałem! valueChanged, probowales?

tak, możesz tworzyć klasę odpowiedzialną za listenera co już zresztą robiłeś w innym temacie...tyle, że tworzyłeś anonimową.

Twój poprzedni kod:

wplata.addActionListener(new ActionListener(){
            @Override
            public void actionPerformed(ActionEvent x){
                System.out.println("Klik");
            }
        });

to teraz dodanie listenera do listy się nie wiele różni...

lista.addListSelectionListener(new ListSelectionListener()
{
   public void valueChanged(ListSelectionEvent e) 
   {
      System.out.println("Zmiana w liscie");
   }      
});

Odpowiednie sprawdzenia czy lista pusta lub co jest wybrane robisz w metodzie valueChanged

0

Dzięki za pomoc ale i tak nie mam pojęcia co mam gdzie wpisać. Dla mnie to jest jakiś wyższy poziom abstrakcji. A to, że nie mogę edytować tego co NetBeans generuje to już w ogóle wypas.

Jak wpisze sobie np.:

jList1.addListSelectionListener(new ListSelectionListener()){
    
}

To wyskakuje błąd, że package jList1 nie istnieje. W tym moim przykładzie z innego tematu do którego się odnosisz, "wplata" to był obiekt klasy JMenuItem. Tutaj istnieje obiekt o nazwie jList1 klasy JList, i nie rozumiem dlaczego IDE chce interpretować to jako package.

Jak wklepie sobie wszytko co mi napisałeś, czyli:

lista.addListSelectionListener(new ListSelectionListener()
{
   public void valueChanged(ListSelectionEvent e) 
   {
      System.out.println("Zmiana w liscie");
   }      
});

To oprócz błędu o którym już wspomniałem przy "public void..." wyskakuje illegal start of expression. Oraz w ostatniej linijce przy zamknięciu klamry, nawiasu oraz separatorze "class, interface, or enum expected".

Mogę także dodać event value Changed za pomocą buildera ale nic mi to nie da bo nie ma Listenera.

Podsumowując... Nie wiem gdzie mam dodać listenera, tworzenie nowej klasy nie wchodzi w grę bo przecież w tej klasie nie będzie obiektu jList1, bo NetBeans tworzy wszystko (a więc także obiekty) w klasie która dziedziczy JFrame. Gdybym wszystko pisał z palca zamiast używać buildera to pewnie bym sobie z tym poradził, ponieważ jList1 stworzyłbym w oddzielnej klasie która zawierałaby także listenera oraz jego metody, czyli dokładnie tak jak w tym moim przykładzie z innego tematu. Jednak ostatnie moje próby stworzenia GUI bez pomocy buildera trwały dwa dni od rana do późnej nocy i skończyły się tym, że wszystko wywaliłem w piz.. ponieważ stworzenie prostego menu przerosło moje możliwości i zacząłem robić od nowa z builderem. To co wcześniej zajęło mi owe dwa dni, zrobiłem w 20 minut przy wykorzystaniu Tabbed Pane. Potem pół dnia spędziłem nad tym, żeby to co wpisze w JTextField po naciśnięciu JButtona dodało się do ArrayList, a stamtąd do JList. Jakoś mi się to udało, trzeba jednak przyznać, że działa to w sposób idiotyczny bo przy każdym dodaniu obiektu do ArrayList, JListModel jest czyszczony i wszystko jest dodawane do niego od nowa. Ciekawe ile by to trwało gdyby rekordów w Arrayu było np. 100 tyś, hmm... Jako iż siedziałem nad tym pół dnia jakoś się z tym pogodziłem ("bo działało") i kolejną połowę dnia poświęciłem na to, aby wywołać jakąś akcję po wybraniu pozycji z JList. Nie potrafię tego zrobić. Tak wyglądały moje cztery ostatnie dni. Poddaje się bo już piszę średniki zamiast kropek na końcu zdań. Dodam jeszcze, że gdy wklejacie jakiś fragment przykładowego kodu to dla mnie nie jest tak hop-siup żeby go zrozumieć. 1/3 poleceń nie znam i muszę się domyślać co robią. 1/3 nie znam i nie jestem w stanie się domyśleć. Dlatego analiza kodu linijka po linijce, która wam zajęłaby 5 minut mi zajmuje 50 minut. Stąd ten mój brak cierpliwości. Będę musiał kogoś poprosić żeby ze mną przysiadł do tego bo sam sobie nie poradzę. Chociaż już niewiele zostało do zrobienia. Tak czy inaczej dzięki za chęć pomocy.

1

pierwsze co mi się rzuca w oczy to

jList1.addListSelectionListener(new ListSelectionListener()){
 
}

źle to napisałeś. klamry powinny być między przedostatnim i ostatnim nawiasem zamykającym i wszystko zakończone średnikiem

musisz też wtedy nadpisac metodę valueChanged

co do reszty, musiałbym zobaczyć wygenerowany kod

0

Oto wygenerowany kod:

import javax.swing.*;
import java.util.ArrayList;
import java.util.List;

public class Okno extends javax.swing.JFrame {

    ListaMetody lista = new ListaMetody();
    Lista2Metody lista2 = new Lista2Metody();
    DefaultListModel jList1Model = new DefaultListModel();
    DefaultListModel jList3Model = new DefaultListModel();

    public Okno() {
        initComponents();
    }


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

        jTabbedPane1 = new javax.swing.JTabbedPane();
        wplata = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        txtStanKontaWplaty = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        txtKwotaWplaty = new javax.swing.JTextField();
        wplac = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        jLabel1 = new javax.swing.JLabel();
        wplata2 = new javax.swing.JPanel();
        jLabel7 = new javax.swing.JLabel();
        txtStanKontaWyplaty = new javax.swing.JTextField();
        jLabel8 = new javax.swing.JLabel();
        txtKwotaWyplaty = new javax.swing.JTextField();
        wplac2 = new javax.swing.JButton();
        jScrollPane3 = new javax.swing.JScrollPane();
        jList3 = new javax.swing.JList();
        jLabel9 = new javax.swing.JLabel();
        jPanel1 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        txtNoweImie = new javax.swing.JTextField();
        txtNoweNazwisko = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        wplata.setBackground(new java.awt.Color(255, 255, 255));

        jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel2.setText("Stan Konta:");

        txtStanKontaWplaty.setEditable(false);

        jLabel3.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel3.setText("Kwota:");

        wplac.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        wplac.setText("Wpłać");

        jList1.setModel(jList1Model);
        jScrollPane1.setViewportView(jList1);

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Wybierz Konto");

        javax.swing.GroupLayout wplataLayout = new javax.swing.GroupLayout(wplata);
        wplata.setLayout(wplataLayout);
        wplataLayout.setHorizontalGroup(
            wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(wplataLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(wplataLayout.createSequentialGroup()
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(35, 35, 35)
                        .addGroup(wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(wplataLayout.createSequentialGroup()
                                .addComponent(wplac, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, wplataLayout.createSequentialGroup()
                                .addGroup(wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(wplataLayout.createSequentialGroup()
                                        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 51, Short.MAX_VALUE)
                                        .addComponent(txtStanKontaWplaty, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(wplataLayout.createSequentialGroup()
                                        .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(txtKwotaWplaty, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGap(59, 59, 59))))
                    .addGroup(wplataLayout.createSequentialGroup()
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE))))
        );
        wplataLayout.setVerticalGroup(
            wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, wplataLayout.createSequentialGroup()
                .addGroup(wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(wplataLayout.createSequentialGroup()
                        .addGap(79, 79, 79)
                        .addGroup(wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel2)
                            .addComponent(txtStanKontaWplaty, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(26, 26, 26)
                        .addGroup(wplataLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel3)
                            .addComponent(txtKwotaWplaty, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(wplac))
                    .addGroup(wplataLayout.createSequentialGroup()
                        .addGap(23, 23, 23)
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE)))
                .addGap(39, 39, 39))
        );

        jTabbedPane1.addTab("Wpłaty", wplata);

        wplata2.setBackground(new java.awt.Color(255, 255, 255));

        jLabel7.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel7.setText("Stan Konta:");

        txtStanKontaWyplaty.setEditable(false);

        jLabel8.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel8.setText("Kwota:");

        wplac2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        wplac2.setText("Wypłać");

        jList3.setModel(jList3Model);
        jScrollPane3.setViewportView(jList3);

        jLabel9.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel9.setText("Wybierz Konto");

        javax.swing.GroupLayout wplata2Layout = new javax.swing.GroupLayout(wplata2);
        wplata2.setLayout(wplata2Layout);
        wplata2Layout.setHorizontalGroup(
            wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(wplata2Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(wplata2Layout.createSequentialGroup()
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(35, 35, 35)
                        .addGroup(wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(wplata2Layout.createSequentialGroup()
                                .addComponent(wplac2, javax.swing.GroupLayout.PREFERRED_SIZE, 146, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, wplata2Layout.createSequentialGroup()
                                .addGroup(wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(wplata2Layout.createSequentialGroup()
                                        .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 96, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(txtStanKontaWyplaty, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(wplata2Layout.createSequentialGroup()
                                        .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 87, Short.MAX_VALUE)
                                        .addComponent(txtKwotaWyplaty, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addGap(59, 59, 59))))
                    .addGroup(wplata2Layout.createSequentialGroup()
                        .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 125, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 0, Short.MAX_VALUE))))
        );
        wplata2Layout.setVerticalGroup(
            wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, wplata2Layout.createSequentialGroup()
                .addGroup(wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(wplata2Layout.createSequentialGroup()
                        .addGap(79, 79, 79)
                        .addGroup(wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel7)
                            .addComponent(txtStanKontaWyplaty, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(26, 26, 26)
                        .addGroup(wplata2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(jLabel8)
                            .addComponent(txtKwotaWyplaty, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(wplac2))
                    .addGroup(wplata2Layout.createSequentialGroup()
                        .addGap(23, 23, 23)
                        .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE)))
                .addGap(39, 39, 39))
        );

        jTabbedPane1.addTab("Wypłaty", wplata2);

        jPanel1.setBackground(new java.awt.Color(255, 255, 255));

        jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel4.setText("Imie:");

        jLabel5.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jLabel5.setText("Nazwisko:");

        jButton1.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        jButton1.setText("Załóż Nowe Konto");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        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(98, 98, 98)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jButton1)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel4)
                            .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(59, 59, 59)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(txtNoweNazwisko, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(txtNoweImie, javax.swing.GroupLayout.PREFERRED_SIZE, 161, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addContainerGap(94, Short.MAX_VALUE))))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(63, 63, 63)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(txtNoweImie, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(31, 31, 31)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(txtNoweNazwisko, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel5))
                .addGap(38, 38, 38)
                .addComponent(jButton1)
                .addContainerGap(83, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab("Załóż Nowe Konto", jPanel1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1)
        );

        jTabbedPane1.getAccessibleContext().setAccessibleName("tab2");
        jTabbedPane1.getAccessibleContext().setAccessibleDescription("");

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

    
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        
        String imie = txtNoweImie.getText();
        String nazwisko = txtNoweNazwisko.getText();
        int saldoPoczatkowe = 0;
        
        lista2.zapis(saldoPoczatkowe);
        lista.zapis( imie + " " + nazwisko);
        lista.rozmiar();
        jList1Model.clear();
        jList3Model.clear();
        
        for(int i=0; i<lista.ilosc; i++){
            
            lista.odczyt(i);
            jList1Model.add(i, lista.zxc);
            jList3Model.add(i, lista.zxc);
            
        }
        
        jList1.updateUI();
        JOptionPane.showMessageDialog(null, lista.ilosc);
        
    }                                        
    

    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Okno.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Okno().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    private javax.swing.JList jList1;
    private javax.swing.JList jList3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField txtKwotaWplaty;
    private javax.swing.JTextField txtKwotaWyplaty;
    private javax.swing.JTextField txtNoweImie;
    private javax.swing.JTextField txtNoweNazwisko;
    private javax.swing.JTextField txtStanKontaWplaty;
    private javax.swing.JTextField txtStanKontaWyplaty;
    private javax.swing.JButton wplac;
    private javax.swing.JButton wplac2;
    private javax.swing.JPanel wplata;
    private javax.swing.JPanel wplata2;
    // End of variables declaration                   
}

Klas ListaMetody oraz Lista2Metody nie wklejam bo nie dotyczą problemu, zresztą można się domyślić co zawierają.

1

Hm według mnie w metodzie initComponents zaraz za

jList1.setModel(jList1Model);

powinieneś dodać to co pisałem wcześniej.

Jeśli nie pójdzie to wrzuć wszystkie źródła to uruchomie u siebie.

0

Nie mogę nic zmieniać w metodzie initComponents, NetBeans blokuje dostęp do niej. Natomiast po dodaniu twojego kodu do tego co chyba fachowo nazywa się konstruktorem:

    public Okno() {
        initComponents();

        jList1.addListSelectionListener(new ListSelectionListener()
{
   public void valueChanged(ListSelectionEvent e) 
   {
      System.out.println("Zmiana w liscie");
   }      
});
    }

Wywala następujące błędy:

  1. Przy "(new ListSelectionListener()"

method addListSelectionListener in class JList<E> cannot be applied to given types;
required: ListSelectionListener
found: <anonymous ListSelectionListener>
reason: actual argument <anonymous ListSelectionListener> cannot be converted to ListSelectionListener by method invocation conversion
where E is a type-variable:
E extends Object declared in class JList

cannot find symbol
symbol: class ListSelectionListener
location: class Okno

  1. Przy "public void..."

method addListSelectionListener in class JList<E> cannot be applied to given types;
required: ListSelectionListener
found: <anonymous ListSelectionListener>
reason: actual argument <anonymous ListSelectionListener> cannot be converted to ListSelectionListener by method invocation conversion
where E is a type-variable:
E extends Object declared in class JList

cannot find symbol
symbol: class ListSelectionEvent

Podaje dwie pozostałe klasy programu:
Klasa ListaMetody:

import java.util.ArrayList;
import java.util.List;

public class ListaMetody {
    
   ArrayList listaKont = new ArrayList();
   String zxc;
   int ilosc;
   
   void zapis(String y){
       
       listaKont.add(y);
       
   }
   
   void odczyt(int x){
       
       zxc = (String)listaKont.get(x);
       
   }
    
   void rozmiar(){
       
       ilosc = listaKont.size();
       
   }
   
}

Oraz Klasa Lista2Metody:

import java.util.ArrayList;

public class Lista2Metody {
    
   ArrayList listaSrodkow = new ArrayList();
   String zxc;
   int ilosc;
   
   void zapis(int y){
       
       listaSrodkow.add(y);
       
   }
   
   void odczyt(int x){
       
       zxc = (String)listaSrodkow.get(x);
       
   }
    
   void rozmiar(){
       
       ilosc = listaSrodkow.size();
       
   }
   
}

To cały program. W tej zakładce (nie wiem jak to nazwać) w której jest metoda main, należy chyba jeszcze dodać import java.awt.event.*;

Podaje też link do pobrania całego projektu:
https://www.dropbox.com/s/efbqj26emt1wz9b/ProjektInterfejsGUI2.rar


Istota mojego problemu leży w tym, że nie mogę edytować kodu generowanego przez NetBeans, który tworzy obiekt jList klasy JList. Gdybym mógł to stworzyłbym nową klasę dziedziczącą po JList, w niej dodał odpowiedniego Listenera oraz napisałbym metodę valueChanged. Nazwałbym tą klasę dajmy na to "Xyz". Następnie zamieniłbym wygenerowane przez NetBeans:

jList1 = new javax.swing.JList();

na:

jList1 = new Xyz();

Jednak nie da rady tego zmienić. Gdzie w takim razie mogę zapisać własne metody do obiektu jList1? Jak sobie z tym poradzić?

0

Poniższy kod działa u mnie bez problemu i mam w konsoli wyświetlany tekst "value changed". Spróbuj jak u Ciebie będzie - chociaż wygląda na taki sam jak wklejałeś, to może jakiś mały błąd się wkradł.


public Okno() {
        initComponents();
        
        jList1.addListSelectionListener(new ListSelectionListener() {
			
			@Override
			public void valueChanged(ListSelectionEvent event) {
				if (event.getValueIsAdjusting())
					return;
				
				System.out.println("value changed");				
			}
		});
    }

0

U mnie to nie działa. Gdy odpalę pomimo tego, że kompilator znajduje błędy, w konsoli otrzymuje następujący tekst:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: javax.swing.JList.addListSelectionListener
at Okno.<init>(Okno.java:15)
at Okno$3.run(Okno.java:337)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:721)
at java.awt.EventQueue.access$200(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:682)
at java.awt.EventQueue$3.run(EventQueue.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:691)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

1

Nie wiem jak to budowanie GUI w NetBeansie działa.... coś zapisuje sobie w tym pliku Okno.form. Musi się ktoś ogarnięty w używaniu NetBeansa wypowiedzieć.

Ostatecznie jeszcze spróbuj osobną klasę stworzyć bo coś się o to pruł, nie umiem zinterpretować tych wcześniejszych błędów inaczej:

import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;


public class Sluchacz implements ListSelectionListener {

	@Override
	public void valueChanged(ListSelectionEvent event) {
		if (event.getValueIsAdjusting())
			return;
		
		System.out.println("value changed");				
	}
	
}
    public Okno() {
        initComponents();
        
        jList1.addListSelectionListener(new Sluchacz());
    }
0

No działa aż miło ;D Wielkie dzięki.

A wcześniejsza wersja bez tworzenia dodatkowej klasy jak się okazało nie działała bo nie dopisałem:
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

...

1 użytkowników online, w tym zalogowanych: 0, gości: 1