2016-06-15 20 views
13

Quando chiama doClick(pressTime) invia 68 millisecondi? Perché hanno deciso su 68 invece di un numero più tondo? È un numero completamente arbitrario?Perché Java doClick() usa 68 millisecondi quando chiama doClick (pressTime)?

Da Java AbstractButton:

public void doClick() { 
    doClick(68); 
} 
+1

Questa è una domanda interessante, anche se non sono sicuro che sia necessariamente rispondente (perché è una decisione arbitraria apparente senza un commento lasciato nel codice sorgente). Tuttavia, non ho familiarità con gli interni di AWT, quindi potrebbe esserci una ragione per cui qualcuno che abbia più familiarità con esso può fornire che non sto vedendo. – hexafraction

+0

Non sarei sorpreso se fosse arbitrario, ma se c'è un motivo che sarebbe bello sapere! – Ian

+0

Anche io mi interesso - Gli interni e le decisioni di progettazione dietro l'API Java e JVM sono per me un grande interesse personale. – hexafraction

risposta

6

Potrebbe avere a che fare con la velocità con un essere umano può cliccare su media.

Se si guarda questo timer, con un po 'di eccitazione è possibile raggiungere in media i 68 ms.

Avrebbero potuto semplicemente eseguire una configurazione come quella di seguito, eseguire una procedura per ottenere una buona durata media dei clic e quindi utilizzarla per il valore predefinito.

var timer = 0; 
 
var results = []; 
 
$('#clicktest').on('mousedown',function() { 
 
    timer = window.performance.now(); 
 
}); 
 
$('#clicktest').on('mouseup',function() { 
 
    results.push(window.performance.now()-timer); 
 
    var total = 0; 
 
    for(c=0;c<results.length;c++) { 
 
     total+= results[c]; 
 
    } 
 
    $('#output').text('Average click duration '+ Math.round(total/results.length)+'ms'); 
 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="clicktest">Click me</button> 
 
<div id="output">Average click duration N/A</div>

1
  • nota la maggior parte dei manufatti di pittura sono validi per Metal L&F solo e soltanto come un default, f.e. Windows L&F ignora del tutto questo, non ha questo metodo come pari o ritorni per linguaggi di programmazione i thats va dal sessione Win,

  • doClick è programatically a simulare la stampa JButton esempio da mouse o evento chiave (TAB, ENTER)

  • doClick(int pressTime) visivamente l'azione vernici come le informazioni all'utente, pittura isPressed allo schermo, millisecondi dalla JVM mi torna molto da vicino numerare (1999 - 2001 for doClick(2000))

  • numero molto basso a 68miliseconds non hanno alcun effetto schermo, perché non è catturabile da esseri umani gli occhi, forse la maggior parte dei TV LCD/monitor LED non può ridipingere questo artefatto dipinto correttamente,

  • risposta da @Michael Dibbets è più vicino a setMultiClickThreshhold(long threshhold),

Problemi correlati