- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我的问题是,我正在实现一个 UI 创建工具,该工具需要使用边缘上的拖动手势来调整元素的大小。在检查修改键是否被按下时进行此拖动时会出现问题,即实现统一缩放。拖动手势处于 Activity 状态时永远不会引发键事件,因此我无法在拖动过程中激活/停用此状态,这显然不是理想的!我的问题是,在 JavaFX 中是否存在某些原因导致出现这种情况?有什么解决方法吗?我可以访问原始键盘状态,即没有事件回调吗?
最佳答案
这对我来说似乎工作得很好:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Tooltip;
import javafx.scene.input.KeyCode;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class DraggableStretchableNodeExample extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
Rectangle rect = new Rectangle(50, 50, 50, 50);
rect.setFill(Color.CORNFLOWERBLUE);
Tooltip tooltip = new Tooltip("Drag to move, Z+Drag to stretch");
Tooltip.install(rect, tooltip);
root.getChildren().add(rect);
enableDragging(rect);
Scene scene = new Scene(root,400,400);
primaryStage.setScene(scene);
primaryStage.show();
}
private void enableDragging(Rectangle rect) {
// A mutable struct-like nested class for the last known mouse location:
class MouseLocation {
double x, y ;
void set(double x, double y) {
this.x=x ;
this.y=y ;
}
}
MouseLocation mouseLocation = new MouseLocation();
// Another for the 'Z' key state:
class Zstate {
boolean pressed ;
}
Zstate zState = new Zstate();
rect.setOnMousePressed(event -> mouseLocation.set(event.getX(), event.getY()));
rect.setOnMouseDragged(event -> {
if (zState.pressed) {
stretch(rect, event.getX(), event.getY(), event.getX()-mouseLocation.x, event.getY()-mouseLocation.y);
} else {
move(rect, event.getX()-mouseLocation.x, event.getY()-mouseLocation.y);
}
mouseLocation.set(event.getX(), event.getY());
});
rect.setFocusTraversable(true);
rect.setOnKeyPressed(event -> {
if (event.getCode() == KeyCode.Z) {
zState.pressed = true ;
}
});
rect.setOnKeyReleased(event -> {
if (event.getCode() == KeyCode.Z) {
zState.pressed = false ;
}
});
}
private void stretch(Rectangle rect, double x, double y, double deltaX, double deltaY) {
if (x < rect.getX() + rect.getWidth() / 2) {
// if the mouse is in the left half, stretch left by adjusting x and width:
rect.setX(rect.getX() + deltaX);
rect.setWidth(rect.getWidth() - deltaX);
} else {
// if in the right half, just stretch by adjusting the width:
rect.setWidth(rect.getWidth() + deltaX);
}
// same vertically:
if (y <rect.getY() + rect.getHeight() / 2) {
rect.setY(rect.getY() + deltaY);
rect.setHeight(rect.getHeight() - deltaY);
} else {
rect.setHeight(rect.getHeight() + deltaY);
}
}
private void move(Rectangle rect, double deltaX, double deltaY) {
rect.setX(rect.getX()+deltaX);
rect.setY(rect.getY()+deltaY);
}
public static void main(String[] args) {
launch(args);
}
}
关于拖动手势 Activity 时未引发 JavaFX KeyEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399283/
对于我的生活,我在互联网上找不到任何帮助。我的目标是编写一个在按住 shift 键并在应用程序上单击鼠标时发生的函数。现在我只关注转变。 我有这门课: public void keyPressed(K
KeyEvent.SHIFT_DOWN_MASK 和 KeyEvent.SHIFT_MASK 有什么区别?Javadoc 说“建议改用 SHIFT_DOWN_MASK”。 最佳答案 如果您查看 val
根据 API 29 中的文档,KeyEvent.getCharacters()已弃用,但我找不到相同的替代方法。 根据文档,它说 "@deprecated no longer used by the
我正在处理一个特定的场景,使用 selenium 上传文档。多次失败后我想自己调试一下代码。这是我的代码和错误。 public void uploadFile(String imagePath) {
在 Firefox 3.6 和 4.0 中,我可以将 KeyboardEvent 的 keyCode 与存储在全局 KeyEvent 中的键的预定义常量进行比较对象(它是 DOM3 规范的一部分)。
我是 Wicket 的新手,我想创建一个 ajax 行为,如果按下功能键,它会调用我的 Javacode。 我的想法是创建一种向浏览器发送一些 Javascript 的行为,只有 F-Key 会导致
我的 java 类文件看起来像 public class SignIn extends Activity { /*** Called when the activity is first create
我注意到 Java KeyEvent 对象有一个 getExtendedKeyCode() 方法和一个 getKeyCode() 方法,它们都返回整数。有什么区别? 最佳答案 Java 的 docum
我想要一个程序,它将使用 KeyEvent 读取一个文件中按下的键,并将其写入下一个文件中的控制台。我设置了 Q 和 W 键,但每当我尝试运行该程序时,它都会发送垃圾邮件“按下 Q 键”和“按下 W
如果我使用 GUI 并且有一个文本字段,用户可以在其中输入内容,然后程序会输入回来,那么我将如何在方法期间访问 KeyEvent? (keyEvent 是当按下 Enter 键时 -> 文本字段中的文
我有一个面板,上面有 Jtextfield只接受数字。因此,当我按 Enter 时将加载用户配置文件。这只是为了查看他的个人资料。 我想要的:当我再次按 ENTER 键时,所有配置文件都将被清除,当我
我想知道如何在按键事件中按下所有按键。例如,我想为 ctrl + f 编写一个监听器来切换全屏。如何检查在一个事件中是否同时按下了 ctrl 和 f ? 编辑1: 我尝试打印 KeyEvent.get
我将在java中创建简单的打字游戏。所以我创建了新的类wordpanel,它扩展了jpanel。除了按键事件之外,一切都正常。当我按下一个键时,所有第一个jlable面板的前景应该更改为黄色.但我认识
我正在用 Java 编写一个语法突出显示文本编辑器,但我遇到了一些问题,我应该做什么,而不是我想要做什么。基本上 KeyEvent 类给我带来了一些问题: KeyTyped 不允许我识别关键是什么所以
我正在制作一种乒乓球游戏,但我有一个问题。我的代码中有一个方法,用于检查用户输入是否按下了某个键。但当我按下(在我的例子中)UP键时它不会执行。 这是代码,抱歉英语不好,请帮助我: import ja
这是一个探索性问题,用于确定我是否应该花时间进行实现,如果它是一条“成本效益”的途径。我承认我还没有尝试自己实现这个。与代码块相比,我更希望获得理解和指导。 我知道可以通过向接收焦点的对象添加 Key
如果我的鸡到达角落,我会尝试限制移动这里是我移动方法的代码 public void move1(){ if(((x=350)) || ((x>=450) && (y>=350))){
我正在尝试使用 JavaFX 创建一个 GUI 环境(仍处于非常早期的阶段),我已经实现了 EventHandler,MouseEvent 工作正常,但 KeyEvent 似乎由于某些原因无法工作。我
我正在开发一个应用程序并卡住了。我有一个普通的简单按钮。我想要做的是,如果我单击此按钮,它的行为就像您在软键盘上按空格键一样。 我该怎么做。一定有办法,因为您可以开发软键盘。 所以重复 xP 如果我按
我需要通过单击链接来模拟按键。必须通过单击链接或类似功能调用键盘快捷键 CTRL++。 最佳答案 您不能使用 JavaScript 调用按键操作。 但是,您可以使用 JavaScript 控制缩放级别
我是一名优秀的程序员,十分优秀!