下面列出了怎么用javafx.scene.input.KeyEvent的API类实例代码及写法,或者点击链接到github查看源代码。
public DesignerRootImpl(Stage mainStage, DesignerParams params, HostServices hostServices) {
this.mainStage = mainStage;
this.developerMode = params.isDeveloperMode();
registerService(LOGGER, new EventLoggerImpl(this));
// vetoed by any other key press, so that eg CTRL+V repeatedly vetoes it
mainStage.addEventHandler(KeyEvent.KEY_PRESSED, e -> isCtrlDown.setValue(
e.isControlDown() && e.getCode() == KeyCode.CONTROL));
mainStage.addEventHandler(KeyEvent.KEY_RELEASED, e -> isCtrlDown.setValue(
e.isControlDown() && e.getCode() == KeyCode.CONTROL));
GlobalDiskManagerImpl diskManager = new GlobalDiskManagerImpl(this, params.getSettingsDirectory());
registerService(DISK_MANAGER, diskManager);
params.processDefaults(diskManager.defaultAppStateFile());
registerService(HOST_SERVICES, hostServices);
registerService(PERSISTENCE_MANAGER, new OnDiskPersistenceManager(this, params.getPersistedInputFile(), params.getPersistedOutputFile()));
registerService(NODE_SELECTION_CHANNEL, new MessageChannel<>(Category.SELECTION_EVENT_TRACING));
registerService(LATEST_XPATH, new MessageChannel<>(Category.SELECTION_EVENT_TRACING));
registerService(TEST_LOADER, new MessageChannel<>(Category.TEST_LOADING_EVENT));
registerService(TEST_CREATOR, new TestCreatorService());
registerService(TREE_RENDERER_REGISTRY, new TreeRendererRegistry(this));
registerService(IS_NODE_BEING_DRAGGED, Var.newSimpleVar(false));
}
/**
* creates a text field with listeners so that that edits will be committed
* at the proper time
*/
protected void createTextField() {
textField = new TextField(getString());
textField.setMinWidth(this.getWidth() - this.getGraphicTextGap() * 2);
textField.focusedProperty().addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<? extends Boolean> arg0,
Boolean arg1, Boolean arg2) {
if (!arg2) {
commitEdit(textField.getText());
}
}
});
textField.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent t) {
if (t.getCode() == KeyCode.ENTER) {
commitEdit(textField.getText());
} else if (t.getCode() == KeyCode.ESCAPE) {
cancelEdit();
}
}
});
}
public static UIKeyCombination getCombination(KeyEvent keyEvent) {
UIKeyCombination keyCombination = new UIKeyCombination();
if( keyEvent.isAltDown() ) {
keyCombination.getKeys().add(UIKey.ALT);
}
if( keyEvent.isShiftDown() ) {
keyCombination.getKeys().add(UIKey.SHIFT);
}
if( keyEvent.isControlDown() ) {
keyCombination.getKeys().add(UIKey.CONTROL);
}
if( keyEvent.isMetaDown() ) {
keyCombination.getKeys().add(UIKey.COMMAND);
}
UIKey principalKey = JFXKey.getKey(keyEvent);
if(!keyCombination.contains(principalKey)) {
keyCombination.getKeys().add(principalKey);
}
return keyCombination;
}
@Override
protected void activate() {
root.getSelectionModel().selectedItemProperty().addListener(tabChangeListener);
navigation.addListener(navigationListener);
if (root.getSelectionModel().getSelectedItem() == offerBookTab)
navigation.navigateTo(MainView.class, MarketView.class, OfferBookChartView.class);
else if (root.getSelectionModel().getSelectedItem() == tradesTab)
navigation.navigateTo(MainView.class, MarketView.class, TradesChartsView.class);
else
navigation.navigateTo(MainView.class, MarketView.class, SpreadView.class);
if (root.getScene() != null) {
scene = root.getScene();
scene.addEventHandler(KeyEvent.KEY_RELEASED, keyEventEventHandler);
}
}
@Override
public void altHandler(KeyEvent event) {
super.altHandler(event);
if (event.isAltDown()) {
String key = event.getText();
if (key == null || key.isEmpty()) {
return;
}
switch (key) {
case "p":
case "P":
if (!popButton.isDisabled()) {
popAction();
}
break;
default:
break;
}
}
}
public Dialog( String stylesheet, Node top, Node... others ) {
dialogStage.initOwner( primaryStage );
dialogStage.initModality( Modality.NONE );
box.setAlignment( Pos.CENTER );
box.setPadding( new Insets( 20 ) );
box.getChildren().add( top );
box.getChildren().addAll( others );
dialogStage.setScene( new Scene( box ) );
dialogStage.getScene().setFill( Color.TRANSPARENT );
dialogStage.addEventHandler( KeyEvent.KEY_RELEASED, ( KeyEvent event ) -> {
if ( KeyCode.ESCAPE == event.getCode() ) {
dialogStage.close();
}
} );
if ( stylesheet == null ) {
FxUtils.setupStylesheet( dialogStage.getScene() );
} else {
dialogStage.getScene().getStylesheets().add( stylesheet );
}
}
@Override
public void finalRelease(KeyEvent event) {
if (invalidGesture) {
return;
}
updateMillisOnKeyRelease(event);
timer.stop();
updateScrollPosition();
commit(viewportPolicy);
viewportPolicy = null;
totalMillisDown = 0;
totalMillisUp = 0;
totalMillisLeft = 0;
totalMillisRight = 0;
}
/**
* Create a new image panel.
*/
public ImagePanel() {
setStyle("-fx-background-color: rgba(0, 0, 0);");
previewCanvas = new DisplayCanvas(false, false, false, super::updateCanvas, Priority.LOW);
registerDisplayCanvas(previewCanvas);
setCenter(previewCanvas);
addEventFilter(KeyEvent.KEY_PRESSED, (KeyEvent t) -> {
if (t.getCode().equals(KeyCode.PAGE_DOWN) || t.getCode().equals(KeyCode.DOWN)) {
t.consume();
QueleaApp.get().getMainWindow().getMainPanel().getLivePanel().advance();
} else if (t.getCode().equals(KeyCode.PAGE_UP) || t.getCode().equals(KeyCode.UP)) {
t.consume();
QueleaApp.get().getMainWindow().getMainPanel().getLivePanel().previous();
}
});
}
@Override
public void controlHandler(KeyEvent event) {
super.controlHandler(event);
if (!event.isControlDown()) {
return;
}
String key = event.getText();
if (key == null || key.isEmpty()) {
return;
}
switch (key) {
case "e":
case "E":
copyEnglish();
return;
}
}
@FXML public void journalKey(KeyEvent event) {
try {
keyAction(event, () -> addEntry(), () -> editEntry(), () -> delEntry());
} catch (Exception e) {
ExceptionController.display(e);
}
}
/**
* Handle of input the enter key.
*/
@FxThread
private void keyReleased(@NotNull KeyEvent event) {
if (event.getCode() == KeyCode.ENTER) {
changeValue();
}
}
@Test
public void testRightArrowKeyMoveTarget() {
double oldX = pepperPopper.getPosition().getX();
double oldY = pepperPopper.getPosition().getY();
KeyEvent rightArrowEvent = new KeyEvent(null, pepperPopper.getTargetGroup(), KeyEvent.KEY_PRESSED, "right",
"right", KeyCode.RIGHT, false, false, false, false);
Event.fireEvent(pepperPopper.getTargetGroup(), rightArrowEvent);
assertEquals(oldX + TargetView.MOVEMENT_DELTA, pepperPopper.getPosition().getX(), .001);
assertEquals(oldY, pepperPopper.getPosition().getY(), .001);
}
@Override
protected void doHookScene(Scene scene) {
// register mouse move filter for forwarding events to drag policies
// that can show a mouse cursor to indicate their action
scene.addEventFilter(MouseEvent.MOUSE_MOVED,
indicationCursorMouseMoveFilter);
// register key event filter for forwarding events to drag policies
// that can show a mouse cursor to indicate their action
scene.addEventFilter(KeyEvent.ANY, indicationCursorKeyFilter);
// register mouse filter for forwarding press, drag, and release
// events
scene.addEventFilter(MouseEvent.ANY, mouseFilter);
}
@Override
protected void deactivate() {
if (scene != null) {
scene.removeEventHandler(KeyEvent.KEY_RELEASED, keyEventEventHandler);
}
sortedList.comparatorProperty().unbind();
}
public void escListener(KeyEvent event) {
KeyCode code = event.getCode();
if (KeyCode.ESCAPE.equals(code)) {
mainController.getTableFindTextField().setText("");
mainController.getTreeViewDataSource().requestFocus();
}
}
/**
* Handle the key pressed event.
*
* @param event the event
*/
@FxThread
protected void processKeyPressed(@NotNull final KeyEvent event) {
final KeyCode code = event.getCode();
if (code == KeyCode.S && event.isControlDown() && isDirty()) {
save();
} else if (handleKeyActionImpl(code, true, event.isControlDown(), event.isShiftDown(), false)) {
event.consume();
}
}
public static UIKey getKey(KeyEvent keyEvent) {
KeyCode keyCode = keyEvent.getCode();
for(JFXKeyMap keyMap : KEY_MAP) {
if( keyMap.getCode().equals(keyCode) ) {
return keyMap.getKey();
}
}
return new UIKey(keyCode.toString().toLowerCase());
}
private void updateMillisOnKeyPress(KeyEvent event) {
long now = System.currentTimeMillis();
if (!isDown && event.getCode().equals(KeyCode.DOWN)) {
startMillisDown = now;
currentMillisDown = 0;
isDown = true;
} else if (!isUp && event.getCode().equals(KeyCode.UP)) {
startMillisUp = now;
currentMillisUp = 0;
isUp = true;
} else if (!isLeft && event.getCode().equals(KeyCode.LEFT)) {
startMillisLeft = now;
currentMillisLeft = 0;
isLeft = true;
} else if (!isRight && event.getCode().equals(KeyCode.RIGHT)) {
startMillisRight = now;
currentMillisRight = 0;
isRight = true;
}
}
@FXML
private void handleTimeZoneSearch(KeyEvent keyEvent) {
String key = keyEvent.getText();
if (key.length() == 0) return;
int i = 0;
for (String item : timeZoneComboBox.getItems()) {
if (item.toLowerCase().startsWith(key) && i > timeZoneComboBoxIndex) {
timeZoneComboBox.setValue(item);
timeZoneComboBoxIndex = i;
return;
}
i++;
}
timeZoneComboBoxIndex = 0;
}
@Override
public Region createNode(T value, EventHandler<KeyEvent> keyEventsHandler, ChangeListener<Boolean> focusChangeListener) {
textField = value == null ? new JFXTextField() : new JFXTextField(String.valueOf(value));
textField.setOnKeyPressed(keyEventsHandler);
textField.getValidators().addAll(validators);
textField.focusedProperty().addListener(focusChangeListener);
return textField;
}
private void right(KeyEvent ignore) {
IndexRange sel = view.getSelection();
if(sel.getLength() == 0) {
view.nextChar(SelectionPolicy.CLEAR);
} else {
view.moveTo(sel.getEnd(), SelectionPolicy.CLEAR);
}
}
@Override
public void keyEventsHandler(KeyEvent event) {
super.keyEventsHandler(event);
// logger.debug(event.getCode() + " " + event.getText());
operationController.eventsHandler(event); // pass event to right pane
}
@Override
protected void handleKeyReleased(KeyEvent e) {
super.handleKeyReleased(e);
// Custom bind support
PluginKeybinds.getInstance().getFileViewBinds().forEach((bind, action) -> {
try {
if (bind.match(e))
action.accept(this);
} catch(Throwable t) {
Log.error(t, "Failed executing file keybind action");
}
});
}
public SettingsDialog(javafx.stage.Stage owner, PlainDictAppOptions _opt, ResourceBundle _bundle)
{
super();
opt=_opt;
bundle=_bundle;
setTitle(bundle.getString(UI.settings));
getIcons().add(new Image(HiddenSplitPaneApp.class.getResourceAsStream("shared-resources/settings.png")));
addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
public void handle(KeyEvent e) {
if (EscComb.match(e)) {
hide();
e.consume();
}
}
});
content = new VBox(make_switchable_path_picker(true, UI.overwrite_browser,opt.getBrowserPathOverwrite(), opt.GetBrowserPathOverwriteEnabled())
, make_switchable_path_picker(true, UI.overwrite_browser_search,opt.GetSearchUrlOverwrite(), opt.GetSearchUrlOverwriteEnabled())
, make_switchable_path_picker(false, UI.overwrite_browser_search1,opt.getSearchUrlMiddle(), false)
, make_switchable_path_picker(false, UI.overwrite_browser_search2,opt.getSearchUrlRight(), false)
, make_switchable_path_picker(false, UI.ow_bsrarg,opt.getBrowserArgs(), false)
, make_switchable_path_picker(true, UI.overwrite_pdf_reader,opt.GetPdfOverwrite(), opt.GetPdfOverwriteEnabled())
, make_switchable_path_picker(true, UI.overwrite_pdf_reader_args,opt.GetPdfArgsOverwrite(), opt.GetPdfArgsOverwriteEnabled())
, make_simple_buttons(UI.pdffolders, regex_config)
, make_simple_seperator()
, make_3_simple_switcher(bundle,this, regex_enable, opt.GetRegexSearchEngineEnabled(), ps_regex, opt.GetPageSearchUseRegex(), class_case, opt.GetClassicalKeyCaseStrategy())
, make_3_simple_switcher(bundle,this, tintwild, opt.GetTintWildResult(), remwsize, opt.GetRemWindowSize(), remwpos, opt.GetRemWindowPos())
, make_3_simple_switcher(bundle,this, tintfull, opt.GetTintFullResult(), doclsset, opt.GetDoubleClickCloseSet(), doclsdict, opt.GetDoubleClickCloseDict())
, make_simple_seperator()
, make_3_simple_switcher(bundle,this, dt_dictpic, opt.GetDetachDictPicker(), dt_advsrch, opt.GetDetachAdvSearch(), dt_setting, opt.GetDetachSettings())
, make_simple_seperator()
, make_3_simple_switcher(bundle,this, autopaste, opt.GetAutoPaste(), filterpaste, opt.GetFilterPaste(), Toodoo, false)
, make_simple_seperator()
);
ScrollPane sv = new ScrollPane(content);
sv.setFitToWidth(true);
Scene Scene = new Scene(sv, 800, 600);
setScene(Scene);
}
/**
* Handle key down event
*
* @param event
*/
@Override
public void handle(KeyEvent event) {
if (!event.getCharacter().matches("[0-9]") && event.getCode() != KeyCode.BACK_SPACE) {
event.consume();
}
}
@FXML public void itemKey(KeyEvent event) {
try {
keyAction(event, () -> addItem(), () -> renameItem(), () -> delItem());
} catch (Exception e) {
ExceptionController.display(e);
}
}
public LettersPane() {
setId("LettersPane");
setPrefSize(480,480);
setFocusTraversable(true);
setOnMousePressed(new EventHandler<MouseEvent>() {
@Override public void handle(MouseEvent me) {
requestFocus();
me.consume();
}
});
setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override public void handle(KeyEvent ke) {
createLetter(ke.getText());
ke.consume();
}
});
// create press keys text
pressText = new Text("Press Keys");
pressText.setTextOrigin(VPos.TOP);
pressText.setFont(new Font(Font.getDefault().getFamily(), 40));
pressText.setLayoutY(5);
pressText.setFill(Color.rgb(80, 80, 80));
DropShadow effect = new DropShadow();
effect.setRadius(0);
effect.setOffsetY(1);
effect.setColor(Color.WHITE);
pressText.setEffect(effect);
getChildren().add(pressText);
}
public void keyReleased(KeyEvent e) {
KeyCode code = e.getCode();
processKeyUpEvents(e);
if (code == null || e.isConsumed()) {
return;
}
e.consume();
}
@Override
public void handle(KeyEvent keyEvent) {
if (keyEvent.getCode() != KeyCode.ESCAPE) {
return;
}
view.disableTargetSelection();
}
@Override
public void keyEventsHandler(KeyEvent event) {
super.keyEventsHandler(event);
// logger.debug(event.getCode() + " " + event.getText());
if (tableController != null) {
tableController.keyEventsHandler(event); // pass event to table pane
}
}