pane.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
System.out.println( "I'm here");
jump( event);
}
});
@FXML
public void printScene() {
System.out.println( pane.getScene());
}
当我点击按钮时,它打印出我的窗格的场景,就像它应该有的那样。但后来,我意识到我的窗格现在捕捉KeyEvents。除了使用Fxml添加一个按钮外,我什么也没做,现在窗格捕捉KeyEvents?当我注释掉按钮的代码时,窗格不再捕捉KeyEvents
<Button onAction="#printScene"/>
这是按钮的所有代码。
注意:我还尝试了pane.requestfocus()
和pane.setfocustraversable(true)
,但也不起作用。但是添加一个按钮突然就能工作了?我好困惑。
整个代码:
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("sample.fxml"));
Parent root = fxmlLoader.load();
Scene scene = new Scene( root, 800, 600);
primaryStage.setTitle("Game");
primaryStage.setScene( scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
public class Controller {
@FXML private Pane pane;
@FXML private Rectangle cube;
public void initialize() {
pane.requestFocus();
pane.setFocusTraversable( true);
pane.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
System.out.println( "I'm here");
jump( event);
}
});
System.out.println( pane.getScene());
}
}
//FXML Code
<Pane fx:controller="sample.Controller" fx:id="pane"
xmlns:fx="http://javafx.com/fxml">
<Rectangle width="800" height="20" layoutY="580" fill="green"/>
<Rectangle fx:id="cube" width="40" height="40" layoutX="5" layoutY="540"/>
<!--<Button />-->
</Pane>
未注释按钮使窗格获得焦点,反之亦然。
我正在尝试在JavaFX中编写某种第一人称视角3D游戏,到目前为止,该运动效果非常好。 我使用JavaFX的内置shape和PerspectiveCamera类将图像渲染到场景中。 但是对于所有关键事件,输入延迟约为1-2秒。 滞后仅出现在: > 一旦程序切换到全屏(即使切换回窗口,它们仍然存在,但当程序刚刚启动时,它们仍然存在) 并且在按下/释放按钮之前不久使用鼠标旋转相机 例如:我按W前进,同
嗨,我正在使用mediacontroller来控制我的媒体播放器,我想使用keyEvents而不是触摸事件来控制,我使用下面的代码来做到这一点,但只有播放/暂停是工作的,当mediacontroller视图出现时,KEYCODE_MEDIA_FAST_FORWARD和KEYCODE_MEDIA_REWIND不被处理。 有谁能建议如何使用关键事件处理快进和快退。 请帮忙。
我目前正在通过斯坦福大学的编程方法论(2008)课程学习Java。我正在试图创建游戏突破,并试图目前动画桨,这是一个GRect类型的对象。这是我的代码: 问题是,如果我用鼠标移动拨片,它会很好地跟随,比我用键盘移动它要流畅得多。改变移动()方法中的值只会改变拨片移动的速度。 我尝试过谷歌搜索,人们做的一件事是逐渐增加和减少划桨移动的速度,但我不确定如何通过这个库正确实现这一点。以下是我的尝试: 在
所以我可以对控制字符使用CTL组合,对大写字母(如a、B)和字符(如!)使用SHIFT!,{(即基本拉丁文和标点符号)。 然而,我无法在Android中找到诸如、...等符号的组合。Ubuntu使用CTRL SHIFT U...后跟四个生成符号的数字的组合,但这似乎无法翻译为Android。 TL;DR:如何使用Android KeyEvents和KeyCharacter Map生成特殊符号? 更
问题内容: 关于它们有很多传说。我想知道真相。以下两个示例之间有什么区别? 问题答案: 不确定从何处获得传说,但: 提交按钮 与: IE6将在标记之间提交此按钮的所有文本,其他浏览器将仅提交值。使用可使您在按钮的设计上享有更大的布局自由度。从各种意图和目的看,它乍一看似乎很棒,但是各种浏览器怪癖使它有时很难使用。 在您的示例中,IE6将发送到服务器,而其他大多数浏览器将不发送任何内容。要使其跨浏览
什么区别以及如何正确重写代码?