Wenn Maustaste länger gedrückt wird.

Status
Nicht offen für weitere Antworten.

igel

Mitglied
Hallo,
ich habe nochmal eine Frage!
Und zwar habe einen Button. Wenn er länger gedrückt wird als t1 500 msec, dann
soll alle t2 200 msec ein ActionEvent ausgelöst werden. (t1 und t2 werden dem Konstruktor übergeben)
Wie mache ich das? Hier mein Code???
Code:
public class AutoRepeatButton extends JLabel implements ActionListener{
	private Timer zeit1, zeit2;
	private int t1, t2;

	
	//private ImageIcon rightIcon = new ImageIcon("right.png");
	   				  
   //Konstruktor
	public AutoRepeatButton(String text, ImageIcon image,int delay1, int delay2){
		super(text);
		setIcon(image);
		t1=delay1;//msec übergeben
	    t2=delay2;//msec übergeben
	    addMouseListener((MouseListener) new MyMouseListener());
	   
	    if (t1 <=0){
	          System.out.println("Fehler beim Eingage von delay");
	          System.out.println("Wert 500 wird eingesetzt");
	          t1=500;
	    }
	    
	    zeit1 = new Timer(t1,this); //zeit auf 500 msec setzten 
	    zeit2 = new Timer(t2,this); //zeit auf 500 msec setzten
	 }
    /***Methoden***/
    public void startEvent(){
    	System.out.println("zeit");
    	if(t1>800){
    		zeit2.start(); //Startet alle 200 msec
    		System.out.println("zeit länger");
    	}
    }
    public void stopEvent(){
        zeit1.stop();
    }
    // Set-Delay
    public void setDelay(int delay){
    	zeit1.setDelay(delay);
    }
    // Get-Delay
    public int getDelay(){
        return zeit1.getDelay();
    }
    public boolean isEvent(){
        return zeit1.isRunning();
    }

	public void actionPerformed(ActionEvent evt) {
		System.out.println("hallo welt");
		
		
	}
	 /***innere Klasse MyMouseListener***/
	public class MyMouseListener extends MouseAdapter {
        public void mousePressed(MouseEvent m) {
        	ActionEvent e;
        	setBorder( BorderFactory.createLoweredBevelBorder() );
        	startEvent(); //Zeit wird gezählt
        	if(t1==500){
        		actionPerformed(null);
        	}else if(t1>500){
        		startEvent();
        	}
        }
        public void mouseReleased(MouseEvent e) {
        	setBorder( BorderFactory.createRaisedBevelBorder() );
        }
     } 
	/***Ende innere Klasse***/


}
 

mic_checker

Top Contributor
Du willst wissen wie lange die Maustaste gedrückt wurde?

Dann müsstest du wohl in mousePressed die "zeit-messung" starten und in mouseReleased wieder stoppen.

Dann einfach die Differenz nehmen.
 

igel

Mitglied
Mit
Code:
zeit2.start()
und
Code:
zeit2.stop()
das funktioniert.
Aber wie nehme ich jetzt die Differenz?
 

L-ectron-X

Gesperrter Benutzer
Code:
System.currentTimeMillis()
http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#currentTimeMillis()
Du fragst in beiden Mouse-Methoden jeweils den long-Wert ab und bildest die Differenz.
 

Semerzo

Aktives Mitglied
Nimm eine Klasse, die den Timer erweitert, füge ein Property
Code:
protected long daOlTime;
protected boolean timeTaken = false;
hinzu.

Bei start machst du
Code:
daOlTime = System.currentTimeMillis();
differenceTaken = false;
Bei stop machst du
Code:
daOlTime = System.currentTimeMillis() - daOlTime;
differenceTaken = true;
Die Zeilen gehören jeweils in die Methode star | stop ...

Dann noch eine Methode in die Klasse
Code:
public long getDifferenceInMillis() {
if (differenceTaken)
  return daOlTime;
else
  //Es wurde noch nicht losgelassen ...
  return 0;
}
 

igel

Mitglied
Ich habe das jetzt soweit eingefügt.
Aber leider bekomme ich als Ausgabe (zum Testen!), wenn ich den Button drücke
zu erst "zeit1" und dann alle 200msec "zeit2"!
Möchte aber, dass "zeit 1" ausgegeben wird, wenn ich die Maustaste kurz klicke. und dann, wenn ich die Maustaste 500msec drücke, alle 200 msec "zeit2"ausgegeben wird.
Ich hoffe der Code hilft weiter...
Code:
public class AutoRepeatButton extends JLabel implements ActionListener{
	private Timer zeit,zeit1, zeit2;
	private int t1, t2;
	protected long Time;
    protected boolean timeTaken = false;
	
	//private ImageIcon rightIcon = new ImageIcon("right.png");
	   				  
   //Konstruktor
	public AutoRepeatButton(String text, ImageIcon image,int delay1, int delay2){
		super(text);
		setIcon(image);
		t1=delay1;//msec übergeben
	    t2=delay2;//msec übergeben
	    addMouseListener((MouseListener) new MyMouseListener());
	   
	    if (t1 <=0){
	          System.out.println("Fehler beim Eingage von delay");
	          System.out.println("Wert 500 wird eingesetzt");
	          t1=500;
	    }
	    zeit1 = new Timer(t1,this); //zeit auf 500 msec setzten 
	    zeit2 = new Timer(t2,this); //zeit auf 500 msec setzten
	 
	 }
    /***Methoden***/
    public void startEvent(){
    	System.out.println("zeit1");
    	zeit1.start(); //Startet alle 200 msec ein ActionEvent
    	 Time = System.currentTimeMillis();
    	 timeTaken = false;
    }
    public void stopEvent(){
        zeit2.stop();
        Time = System.currentTimeMillis()- Time;
        timeTaken = true;
    }
    public void actionPerformed(ActionEvent evt) {
    	 System.out.println("zeit2");
    }
    
    public long getDifferenceInMillis() {
    	if (timeTaken)
    	  return Time;
    	else
    	  //Es wurde noch nicht losgelassen ...
    	  return 0;
    	}
    
	 /***innere Klasse MyMouseListener***/
	public class MyMouseListener extends MouseAdapter {
        public void mousePressed(MouseEvent m) {
        	setBorder( BorderFactory.createLoweredBevelBorder() );
        	startEvent(); //Zeit wird gezählt
        	
        }
        public void mouseReleased(MouseEvent e) {
        	setBorder( BorderFactory.createRaisedBevelBorder() );
        	stopEvent();//beim verlassen des Button ActionEvent stoppen
        }
     } 
	/***Ende innere Klasse***/


}
 

igel

Mitglied
Oh, ich habe was falsch verstanden!
Beim längern dürcken als 500 msec, muss alle 200 msec ein neues Event los geschickt werden.
Und nicht wenn ich ihn wieder loslasse. Beim Loslassen darf kein Event verschickt werden.
Das war falsch von mir beschrieben. Tut mir leid! :oops:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
TheSepp Fenster um x Pixel bewegen, wenn man auf dem Knopf drückt AWT, Swing, JavaFX & SWT 10
_user_q Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
N JFrame löscht alles, wenn groß gemacht AWT, Swing, JavaFX & SWT 9
H MouseAdapter Klasse nutzen wenn eigene Klasse bereits von anderer erbt AWT, Swing, JavaFX & SWT 13
G JavaFX Wert aus DB lesen, wenn erfolgreich automatisch eine fxml laden, möglich? AWT, Swing, JavaFX & SWT 2
Davee JavaFX ListView = null wenn ich sie in Laufzeit ändern will! AWT, Swing, JavaFX & SWT 16
S Event Handling Neu zeichnen nur wenn Berechnung fertig ist AWT, Swing, JavaFX & SWT 4
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
VPChief Buttons Reagieren erst wenn ich Fenster minimiere AWT, Swing, JavaFX & SWT 4
Cromewell JavaFX ImageView vergößern wenn hovered AWT, Swing, JavaFX & SWT 2
Drachenbauer Hauptfenster erhält schmale Streifen rechts unt unten, wenn ich einen JDialog hinzufüge. AWT, Swing, JavaFX & SWT 19
ralfb1105 JavaFX ProgressIndicator Meldung wenn Task failed AWT, Swing, JavaFX & SWT 5
C JTextField Inhalt mit Maus selektieren wenn disabled AWT, Swing, JavaFX & SWT 2
L JavaFX Anderer Text, wenn kein Platz ist. AWT, Swing, JavaFX & SWT 1
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
S JavaFX Fenster aufkommen lassen, wenn mit der Maus über bestimmten Bereich fahren AWT, Swing, JavaFX & SWT 1
richis-fragen JTree +/- verschwidet wenn Knoten keine Kinder hat... AWT, Swing, JavaFX & SWT 6
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
J Event Handling Button "enablen" wenn Eingaben in Textfeldern korrekt sind AWT, Swing, JavaFX & SWT 1
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
E [JavaFX]Wenn felder belegt dann Meldung Verwerfen? AWT, Swing, JavaFX & SWT 2
B Swing JButton deaktivieren, wenn nicht alle JTextFields ausgefüllt sind. AWT, Swing, JavaFX & SWT 2
G Swing Wenn ich mein JFrame Fenster vergrößere die Inhalte anpassen AWT, Swing, JavaFX & SWT 1
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
C SWT MenuBar & MenuItems Fokus wenn F10 unterdrücken/entfernen AWT, Swing, JavaFX & SWT 9
J JTabbedPane Vollbild wenn Tabwechsel AWT, Swing, JavaFX & SWT 1
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
M JFreeChart neu zeichnen sich Wenn Jtable sich ändert AWT, Swing, JavaFX & SWT 5
Z Fenster leer, wenn ich ein JTextField erzeuge AWT, Swing, JavaFX & SWT 3
L JDialog - Event wenn Parent größe ändert AWT, Swing, JavaFX & SWT 2
T JavaFX ControlsFX-Notification öffnet nicht wenn kein JavaFX-Fenster offen. AWT, Swing, JavaFX & SWT 1
B Event Handling MouseListener Behält seine Variablen, auch wenn ich ein neus Objekt erstelle AWT, Swing, JavaFX & SWT 2
T SWT SWTBot Test: Dialog soll sich öffnen,wenn button gedrückt AWT, Swing, JavaFX & SWT 3
T SWT Button soll nur sichbar sein,wenn im Textfeld der Focus ist AWT, Swing, JavaFX & SWT 4
A Swing " comboboxes vergl. wenn aus der 1. etwas gewählt wurde ist, es in der 2. nicht mehr sichtbar AWT, Swing, JavaFX & SWT 9
J Swing JFrame slideout, wenn JButton gedrückt wurde AWT, Swing, JavaFX & SWT 0
A Swing GUI mit ComboBox, wenn Item ausgewählt wurde neues GUI AWT, Swing, JavaFX & SWT 7
R Swing getContentPane maximiert sich nicht mit, wenn man das JFrame maxmiert AWT, Swing, JavaFX & SWT 8
V GUI mit Swing -> Wenn IP eingegeben Domain ausgeben AWT, Swing, JavaFX & SWT 15
K JMenuItem-Shortcut WENN Menüleiste verborgen ist AWT, Swing, JavaFX & SWT 4
C Swing MenuItem feuert Action nur wenn disabled AWT, Swing, JavaFX & SWT 2
D 2 GUI-Fenster. 2.Fenster wird nicht aufgebaut, wenn erstes beschäftigt ist. AWT, Swing, JavaFX & SWT 4
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
C JButton umbennen wenn gedrückt AWT, Swing, JavaFX & SWT 9
Z Swing Wenn JFrame inaktiv - Soundbenachrichtigung bei Aktion AWT, Swing, JavaFX & SWT 2
I swing fenster neu zeichnen, wenn überdeckt AWT, Swing, JavaFX & SWT 8
C AWT Fokus von Component entfernen, wenn kein anderes vorhanden AWT, Swing, JavaFX & SWT 4
C AWT Buttons verschwinden, wenn Fenster Vollbild gesetzt wird AWT, Swing, JavaFX & SWT 38
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
C MouseMotionListener fired keine Events mehr wenn in Button AWT, Swing, JavaFX & SWT 2
R Fensterinhalt erscheint erst, wenn das Fenster verändert wird AWT, Swing, JavaFX & SWT 7
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
K JButton nur dann aktivieren, wenn die Mouse 3 Sek. über dem Button bleibt AWT, Swing, JavaFX & SWT 2
N Button akivieren, wenn Tabelle verändert worden ist AWT, Swing, JavaFX & SWT 2
W Swing Bild zeichnen wenn Maus an bestimmter Position ist AWT, Swing, JavaFX & SWT 4
GianaSisters JTable erkennung wenn Text eingefügt AWT, Swing, JavaFX & SWT 3
H Puzzle - Erkennen wenn gelöst (array vergleichen) AWT, Swing, JavaFX & SWT 10
alex_fairytail Swing Textfeld Action wenn geschrieben wird? AWT, Swing, JavaFX & SWT 6
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
R JFreeChart aktualisieren wenn sich die Ausgangsdaten ändern AWT, Swing, JavaFX & SWT 8
J Swing Cursor von Child falsch, wenn Parant disabled AWT, Swing, JavaFX & SWT 2
xehpuk Swing JScrollBar wird nicht eingeblendet, wenn JTable befüllt wird AWT, Swing, JavaFX & SWT 4
J Swing Lazy Loading in JTree wenn gescrollt wird AWT, Swing, JavaFX & SWT 3
K JTable wird nicht aktualisiert, wenn Filter gesetzt ist AWT, Swing, JavaFX & SWT 9
M Menübar soll bestehen bleiben, wenn andere Masken geöffnet werden AWT, Swing, JavaFX & SWT 4
0 Swing Drag n' Drop Bug wenn Source und Target gleiche Komponente? AWT, Swing, JavaFX & SWT 4
Dit_ Wenn viele NebenFenster zum Locationsetzen das HauptFenster brauchen AWT, Swing, JavaFX & SWT 2
H Funktion ausführen wenn Button gedrückt wird. AWT, Swing, JavaFX & SWT 2
T Swing JTable - true zurückbekommen, wenn der Cursor in einer Zelle blinkt AWT, Swing, JavaFX & SWT 7
T neuer JFrame öffnet sich erst wenn Methode die dahinerliegt abgeschlossen ist. BUG? AWT, Swing, JavaFX & SWT 4
M JWindow schließen wenn Frame sich ändert AWT, Swing, JavaFX & SWT 2
data89 Komponenten verschwinden von JPanel, wenn ich den HG selbst male - Hilfeeee AWT, Swing, JavaFX & SWT 16
D Swing Spaltenköpfe verschieben sich nicht mit, wenn man an horizontaler Scrollbar zieht AWT, Swing, JavaFX & SWT 9
aze JTable automatisch vergrößern wenn das zugehörige JFrame vergrößert wird AWT, Swing, JavaFX & SWT 13
K Wenn Mauszeiger in der Nähe vom Kreis, soll Kreis an eine andere Stelle springen AWT, Swing, JavaFX & SWT 8
E Graphics2D: altes Objekt löschen, wenn repaint aufgerufen wird AWT, Swing, JavaFX & SWT 7
S Swing [gelöst] GUI-Befehle bleiben wirkungslos, wenn danach was großes gemacht wird. AWT, Swing, JavaFX & SWT 5
B JTable getselectedrow liefert -1 wenn Focus verloren AWT, Swing, JavaFX & SWT 4
S JTable Float Column fuegt automatisch Punkt hinzu wenn man Zahlen eingibt. AWT, Swing, JavaFX & SWT 21
Spot84 scrollbar die linksbündig angezeigt wird nur anzeigen wenn sie gebraucht wird AWT, Swing, JavaFX & SWT 5
K JDialog zeigt keine Komponenten wenn es modal ist AWT, Swing, JavaFX & SWT 2
S JTable Probleme wenn ich Zelle verlasse AWT, Swing, JavaFX & SWT 4
S Funktion nur ausführen, wenn Maus über Componente ist AWT, Swing, JavaFX & SWT 2
G JTabbedPane wird groesser wenn man anderen Tab auswaehlt. AWT, Swing, JavaFX & SWT 2
N JFormattedTextField erst Verlassen, wenn Eingabe korrekt AWT, Swing, JavaFX & SWT 6
O JDialog minimieren, wenn Hauptframe minimiert wird AWT, Swing, JavaFX & SWT 4
M Button funktioniert nicht mehr wenn Schleife läuft AWT, Swing, JavaFX & SWT 3
P SWT: KeyEvents abfangen, wenn Programm minimiert ist? AWT, Swing, JavaFX & SWT 5
G MouseWheel nur wenn MouseOver! AWT, Swing, JavaFX & SWT 5
S Listener fuer JPanel der merkt wenn sich was geaendert hat? AWT, Swing, JavaFX & SWT 5
P System.exit(0); ausführen, wenn letztes Fenster geschlossen AWT, Swing, JavaFX & SWT 10
O JTable + event wenn andere Zeile selektiert ist AWT, Swing, JavaFX & SWT 5
R JPanel verkleinert sich, wenn man das Fenster vergrößert AWT, Swing, JavaFX & SWT 7
I JScrollPane, wenn JLabels x Pixel erreichen AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen


Oben