我有一个Java swing应用程序,它使用'泛'JComponent来显示大数据.当用户移动鼠标滚轮时,我会听这些事件,并从滚动量更新JComponent的内容.
我想根据用户是否有不同的行为
我怎么能检测到用户正在使用鼠标滚轮和触控板来生成滚动事件?我依靠java 1.6 swing,si我不能去javaFX.
问题背后的故事:我只想在用户使用鼠标滚轮时为滚动事件添加一种很酷的惯性感.但是当然,在MacOSX上,触控板内置了自己的惯性.所以我想决定是否应该产生惯性运动.
我很难找到一种方法来正确地对边缘进行分类,同时在有向图上进行广度优先搜索.
在广度优先或深度优先搜索期间,您可以对满足4个类的边进行分类:
Skiena [1]给出了一个实现.如果沿着从v1到v2的边缘移动,这里有一种在Java中的DFS期间返回类的方法,以供参考.父映射返回当前搜索的父顶点,以及timeOf()
方法,即发现顶点的时间.
if ( v1.equals( parents.get( v2 ) ) ) { return EdgeClass.TREE; }
if ( discovered.contains( v2 ) && !processed.contains( v2 ) ) { return EdgeClass.BACK; }
if ( processed.contains( v2 ) )
{
if ( timeOf( v1 ) < timeOf( v2 ) )
{
return EdgeClass.FORWARD;
}
else
{
return EdgeClass.CROSS;
}
}
return EdgeClass.UNCLASSIFIED;
Run Code Online (Sandbox Code Playgroud)
我的问题是我无法在有向图上进行宽度优先搜索.例如:
下图 - 这是一个循环 - 是可以的:
A -> B
A -> C
B …
Run Code Online (Sandbox Code Playgroud) algorithm graph-theory directed-graph breadth-first-search graph-algorithm
我有一个用例来自GUI问题,我想提交给你的睿智.
用例
我有一个GUI,根据用户在GUI中设置的一些参数显示计算结果.例如,当用户移动滑块时,会触发几个事件,这些事件都会触发新的计算.当用户将滑块值从A调整为B时,会触发数十个事件.
但是计算可能需要几秒钟,而滑块调整可以每隔几百毫秒触发一次事件.
如何编写一个能够监听这些事件的正确线程,并对它们进行过滤以使结果的重绘更加生动?理想情况下,你会喜欢这样的东西
我试过了什么
我的一个朋友(A. Cardona)提出了一种更新程序线程的低级方法,可以防止太多事件触发计算.我在这里复制粘贴(GPL):
他把它放在一个扩展Thread的类中:
public void doUpdate() {
if (isInterrupted())
return;
synchronized (this) {
request++;
notify();
}
}
public void quit() {
interrupt();
synchronized (this) {
notify();
}
}
public void run() {
while (!isInterrupted()) {
try {
final long r;
synchronized (this) {
r = request;
}
// Call refreshable update from this thread
if (r > 0)
refresh(); // Will trigger re-computation
synchronized (this) {
if (r == request) { …
Run Code Online (Sandbox Code Playgroud) 我想知道Java中是否存在按下(按下)鼠标按钮时不断触发的事件,即使鼠标未移动也是如此.我在典型的MouseListeners中找不到它:
这就是它.知道如何制作这样的活动吗?
干杯
JY
我有一个小的层次结构,所有类都实现了一个公共接口.
每个具体类都需要接收一个包含例如公共字段的设置结构.问题是设置结构
我想知道你是否有任何优雅的设计来处理这个问题.我想建立像:
BaseFunc doer = new ConcreteImplementation1();
Run Code Online (Sandbox Code Playgroud)
使用ConcreteImplementation1实现BaseFunc.并有类似的东西
doer.setSettings(settings)
Run Code Online (Sandbox Code Playgroud)
但是''settings''对象具有适合ConcreteImplementation1的具体实现.
你会怎么做?
众所周知的中点圆算法(维基百科)给出了给定半径圆的像素坐标的x,y坐标.
它使用的计算是迭代的,并在每次迭代时使用一个条件来退出循环: while (y > x) etc...
我的问题是如何提前预测,给定半径,算法返回的总点数是多少?
我的数学背景有限,我无法得出它.我用Google搜索了,我发现的唯一内容如下:http://www.gdunge.com/2011/03/23/a-different-kind-of-pi.该页面的作者道格提到,他通过实验发现,它的round(sqrt(2) * radius)
工作时间为四分之一圆.我尝试了它试图获得整个圈子,它错过了几点.
这个数字背后的实质法则是什么?