Avatar billede mutantboy Nybegynder
05. juli 2003 - 01:32 Der er 3 kommentarer og
1 løsning

"dobbelt-klik" for at aktivere en knap?

Jeg har nogle knapper på et javax.swing.JDesktopPane, de må kun blive aktiveret hvis der bliver "dobbelt-klikket" på dem.

Det må være noget MouseListener eller?

er der nogle der kan lave et lille eksempel evt. med et frame og en enkelt knap ?
Avatar billede Slettet bruger
05. juli 2003 - 02:34 #1
Hrmmm..... her er et løsningsforslag, kan sikkert gøres en smule mere elegant, for jeg er ved at blive MEGET træt nu..... *gab*.... nå, here goes (med main()-metode og alting for at hurtigt kunne blive testet af dig)

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;

class EnableButton
{    public static void main(String[] args)
    {    MyEnableButtonFrame mebf = new MyEnableButtonFrame();
        mebf.pack();
        mebf.show();
    }
}
class MyEnableButtonFrame extends JFrame
{    private static final int DOUBLE_CLICK_LIMIT = 500;
    private JButton toBeEnabled;

    // Til brug i mouseListener
    private Date dateObj;
    private long lastClick;

    public MyEnableButtonFrame()
    {    lastClick = (new Date()).getTime();
   
        toBeEnabled = new JButton("Not Enabled");
        toBeEnabled.setEnabled(false);
        toBeEnabled.addMouseListener(new MouseAdapter() {                       
            public void mouseClicked(MouseEvent me)
            {    long tempClick = (new Date()).getTime();
                if (!toBeEnabled.isEnabled() && (tempClick - lastClick <= DOUBLE_CLICK_LIMIT))
                    toBeEnabled.setEnabled(true);
                lastClick = tempClick;
            }
        });
       
        getContentPane().add(toBeEnabled);
    }
}
Avatar billede tjp Mester
05. juli 2003 - 03:44 #2
Man kunne vel også bruge java's egen DOUBLE_CLICK_LIMIT og nøjes med:
if ( me.getClickCount() == 2)
  toBeEnabled.setEnabled(true);
Avatar billede Slettet bruger
05. juli 2003 - 08:08 #3
Arghh.... det vidste jeg ikke engang at man kunne.... Meeen... der skal man vel stadigvæk tjekke på antallet af ms mellem kliks, det er jo stadigvæk ikke nok bare at vente på 2 klik, det bliver jo automatisk ikke til et dobbeltklik.... ? :-)
Avatar billede tjp Mester
05. juli 2003 - 14:40 #4
Jeg mener, der er en indbygget 'time-out' af en slags (min pc er nede pt så jeg har ikke mulighed for at teste det)- om ikke andet, så tæller den vel kun klik til musen flyttes.
(Ren nysgerrighed: har du sovet lidt siden 02:34:14 eller er du meget mere træt 08:08:04? *S*)
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