为什么Java doClick()在调用doClick(pressTime)时使用68毫秒?

时间:2016-06-15 15:27:12

标签: java swing jbutton delay visual-artifacts

doClick()调用doClick(pressTime)时它是否发送68毫秒?为什么他们决定68而不是更多的数字呢?它是一个完全随意的数字吗?

来自Java AbstractButton:

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

2 个答案:

答案 0 :(得分:6)

这可能与人类平均点击的速度有关。

如果你看一下这个计时器,有点偏心,平均可以达到68毫秒。

他们可能只是简单地进行了类似下面的设置,有一个好的平均点击持续时间,然后将其用作默认值。



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');
  });
&#13;
<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>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

  • 注意大多数绘画人工制品仅对Metal L&F有效,并且仅作为默认值,f.e。 Windows L&F完全忽略了这一点,它没有这个方法作为对等或返回从Win会话运行的编程语言,
  • doClick以编程方式模拟JButton印刷,例如来自鼠标或关键事件(TABENTER

  • doClick(int pressTime)以视觉方式将操作作为信息绘制给用户,将isPressed绘制到屏幕上,来自JVM的毫秒数让我非常接近(1999 - 2001 for doClick(2000))

  • 在68毫秒时非常低的数字没有任何屏幕效果,因为人眼无法捕捉,也许大多数LCD / LED显示器都无法正确地重绘这幅画,< / p>

  • @Michael Dibbets的回答更接近setMultiClickThreshhold(long threshhold)