Avatar billede hjalten5 Nybegynder
12. juni 2003 - 13:10 Der er 4 kommentarer og
1 løsning

Har JList mousePressed og Released som default?

I min List har jeg strenge, der skal over i et textArea, men når jeg klikker på en værdi i listen, smider den strengen over to gange:
En gang når jeg trykker musen ned og igen når jeg slipper.
Har det noget med en manglende focusListener at gøre?

Når jeg har valgt en værdi i min JList og jeg laver valueChanged med piletasterne sender den kun String over én gang.
Kan man definere at den kun skal sende den over ved fx mousePressed?
Avatar billede hjalten5 Nybegynder
12. juni 2003 - 13:38 #1
Det optimale var, at den ved valg med musen sendte den valgte string over KUN en gang. Jeg har valgt singleselectionmodel.
Avatar billede mestersmo Nybegynder
12. juni 2003 - 16:12 #2
kan du ikke lægge valueChanged(e) ned i mousepressed?
Avatar billede hjalten5 Nybegynder
12. juni 2003 - 16:48 #3
Jeg har prøvet, men det giver problemer med hvilken Listener der skal override.

Den kalder simpelthen valueChanged to gange: en når jeg trykker ned med musen og en, når jeg slipper musen.

Nogen ideer?
Avatar billede _carsten Nybegynder
12. juni 2003 - 16:55 #4
Er det noget a la det her, du tænker på ??

public class TestJList extends javax.swing.JFrame {
   
    public TestJList() {
        initComponents();
        setSize(200,250);
    }
   
    private void initComponents() {
        jScrollPane1 = new javax.swing.JScrollPane();
        jList1 = new javax.swing.JList();
        jTextArea1 = new javax.swing.JTextArea();

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jList1.setModel(new javax.swing.AbstractListModel() {
            String[] strings = { "A", "B", "C", "D", "E", "F", "G" };
            public int getSize() { return strings.length; }
            public Object getElementAt(int i) { return strings[i]; }
        });
        jList1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                TilTextArea(evt);
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                TilTextArea(evt);
            }
        });

        jScrollPane1.setViewportView(jList1);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jTextArea1.setPreferredSize(new java.awt.Dimension(190, 150));
        getContentPane().add(jTextArea1, java.awt.BorderLayout.NORTH);

        pack();
    }

    // Kun hvis musen slippes på samme element i listen, overføres teksten
    private void TilTextArea(java.awt.event.MouseEvent evt) {
        if(evt.getID() == evt.MOUSE_PRESSED)
            value = (String)jList1.getSelectedValue();
       
        if(evt.getID() == evt.MOUSE_RELEASED){
            if(value.equals((String)jList1.getSelectedValue())){
                jTextArea1.setText(jTextArea1.getText() + jList1.getSelectedValue());
                value = "";
            }
        }
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    public static void main(String args[]) {
        new TestJList().show();
    }
   
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JList jList1;
    private javax.swing.JTextArea jTextArea1;
    private String value = "";
}
Avatar billede hjalten5 Nybegynder
12. juni 2003 - 18:09 #5
det virker perfekt. mange tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester