下面列出了怎么用javafx.scene.input.MouseButton的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void commonUpdate(Node item) {
setContextMenu(buildContextMenu(item));
DragAndDropUtil.registerAsNodeDragSource(this, item, root);
// Reclicking the selected node in the ast will scroll back to the node in the editor
this.addEventHandler(MouseEvent.MOUSE_CLICKED, t -> {
TreeItem<Node> selectedItem = getTreeView().getSelectionModel().getSelectedItem();
if (t.getButton() == MouseButton.PRIMARY
&& selectedItem != null && selectedItem.getValue() == item) {
onNodeItemSelected.accept(item);
t.consume();
}
});
}
/**
* Handles drag-entered events on the given connector.
*
* @param event a drag-entered event
* @param connector the {@link GConnector} on which this event occured
*/
private void handleDragEntered(final MouseEvent event, final GConnector connector) {
if (!event.getButton().equals(MouseButton.PRIMARY)) {
return;
}
if (event.getButton().equals(MouseButton.PRIMARY) && validator.prevalidate(sourceConnector, connector)) {
final boolean valid = validator.validate(sourceConnector, connector);
tailManager.snapPosition(sourceConnector, connector, valid);
repositionAllowed = false;
if (valid) {
skinLookup.lookupConnector(connector).applyStyle(GConnectorStyle.DRAG_OVER_ALLOWED);
} else {
skinLookup.lookupConnector(connector).applyStyle(GConnectorStyle.DRAG_OVER_FORBIDDEN);
}
}
event.consume();
}
private Node createRequestEntry(Collection collection, RequestContainer request) {
Label requestType = new Label(request.getType());
requestType.getStyleClass().add("request-type");
Label button = new Label(request.getName());
VBox vBox = new VBox(new HBox(requestType,button));
vBox.getStyleClass().add("request-entry");
vBox.setOnMouseClicked(e -> {
// if (e.getButton() == MouseButton.PRIMARY)
// onCommand.invoke(new UiCommand.LoadRequest(request.getId()));
// else
if (e.getButton() == MouseButton.PRIMARY) {
onCommand.invoke(new UiCommand.LoadRequest(request.getId()));
e.consume();
}
if (e.getButton() == MouseButton.SECONDARY) {
reqCtxMenu.show(request, collection, vBox, e.getScreenX(), e.getScreenY());
e.consume();
}
});
return vBox;
}
@Override
protected void initInput() {
onBtnDown(MouseButton.PRIMARY, "move", () -> {
player.getComponent(ActionComponent.class).pushAction(new ContinuousAction() {
Point2D p = new Point2D(getInput().getMouseXWorld(), getInput().getMouseYWorld());
@Override
protected void perform(double tpf) {
if (player.getPosition().distance(p) > 10) {
player.getTransformComponent().translateTowards(p, 5);
} else {
isCompleted = true;
}
}
});
});
}
/**
* Handles mouse-dragged events on the given connector.
*
* @param event a mouse-dragged event
* @param connector the {@link GConnector} on which this event occured
*/
private void handleMouseDragged(final MouseEvent event, final GConnector connector) {
if (!event.getButton().equals(MouseButton.PRIMARY)) {
return;
}
if (!repositionAllowed) {
event.consume();
return;
}
// Case for when the mouse first exits a connector during a drag gesture.
if (removalConnector != null && !removalConnector.equals(hoveredConnector)) {
detachConnection(event, connector);
} else {
tailManager.updatePosition(event);
}
event.consume();
}
/**
* Fires a newly created {@link MouseEvent} of type
* {@link MouseEvent#MOUSE_RELEASED} to the target {@link Node} of the last
* mouse interaction.
*
* @param mods
* The {@link Modifiers} for the {@link MouseEvent}.
*/
public void mouseRelease(final Modifiers mods) {
waitForIdle();
run(() -> {
Point2D local = lastMouseInteraction.target.sceneToLocal(lastMouseInteraction.sceneX,
lastMouseInteraction.sceneY);
Point2D screen = lastMouseInteraction.target.localToScreen(local.getX(), local.getY());
fireEvent(lastMouseInteraction.target,
new MouseEvent(lastMouseInteraction.target, lastMouseInteraction.target, MouseEvent.MOUSE_RELEASED,
local.getX(), local.getY(), screen.getX(), screen.getY(), MouseButton.PRIMARY, 1,
mods.shift, mods.control, mods.alt, mods.meta, false, false, false, false, false, false,
new PickResult(lastMouseInteraction.target, lastMouseInteraction.sceneX,
lastMouseInteraction.sceneY)));
});
waitForIdle();
}
private void iniEvent() {
topBox.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
if(event.getButton()==MouseButton.PRIMARY) {
if (isShow) {
isShow = false;
imageView.setImage(closed);
ListNodePanel.this.getChildren().remove(box);
} else {
isShow = true;
imageView.setImage(open);
ListNodePanel.this.getChildren().add(box);
}
}
}
});
}
private void showContextMenu(MouseEvent event) {
menu.hide();
final List<IliasTreeNode> selectedNodes = ((ResultList) event.getSource())
.getSelectionModel().getSelectedItems();
if (selectedNodes.isEmpty() || selectedNodes == null) {
return;
}
if (selectedNodes.size() == 1) {
dashboard.getCoursesTreeView().selectFile((IliasFile) selectedNodes.get(0));
}
if (event.getButton() == MouseButton.SECONDARY) {
menu = new FileContextMenu(dashboard).createMenu(selectedNodes, event);
menu.show(this, event.getScreenX(), event.getScreenY());
}
}
/**
* Binds a DnD interaction to draw squared shapes.
*/
private void bindDnDToDrawSquaredShape() {
nodeBinder()
.usingInteraction(() -> new DnD(false, true))
.toProduce(i -> {
final SquaredShape sq = (SquaredShape) editing.createShapeInstance();
final Point pt = getAdaptedPoint(i.getSrcLocalPoint());
sq.setPosition(pt.getX() - 1d, pt.getY() - 1d);
sq.setWidth(2d);
return new AddShape(sq, canvas.getDrawing());
})
.on(canvas)
.first((i, c) -> {
canvas.requestFocus();
canvas.setTempView(viewFactory.createView(c.getShape()).orElse(null));
})
.then((i, c) -> updateShapeFromCentre((SquaredShape) c.getShape(), getAdaptedPoint(i.getSrcLocalPoint()), getAdaptedPoint(i.getTgtLocalPoint()).getX()))
.endOrCancel(i -> canvas.setTempView(null))
.when(i -> i.getButton() == MouseButton.PRIMARY && (editing.getCurrentChoice() == EditionChoice.SQUARE ||
editing.getCurrentChoice() == EditionChoice.CIRCLE || editing.getCurrentChoice() == EditionChoice.CIRCLE_ARC))
.strictStart()
.bind();
}
@Override
protected void initInput() {
onBtnDown(MouseButton.PRIMARY, "move", () -> {
player.getComponent(ActionComponent.class).pushAction(new ContinuousAction() {
Point2D p = new Point2D(getInput().getMouseXWorld(), getInput().getMouseYWorld());
@Override
protected void perform(double tpf) {
if (player.getPosition().distance(p) > 10) {
player.getTransformComponent().translateTowards(p, 5);
} else {
isCompleted = true;
}
}
});
});
}
/**
* Returns an {@link EventHandler} that sets X and/or Y axis auto ranging when the primary mouse button is
* double-clicked. If the click occurs inside the X axis area auto range only the X axis and similarly for Y axis. But
* if the event is in the plot area or anywhere else, auto range both axes.
*/
public static EventHandler<MouseEvent> getDoublePrimaryClickAutoRangeHandler( final XYChartInfo chartInfo ) {
return new EventHandler<MouseEvent>() {
@Override
public void handle( MouseEvent event ) {
if ( event.getClickCount() == 2 && event.getButton() == MouseButton.PRIMARY ) {
double x = event.getX();
double y = event.getY();
if ( !chartInfo.getXAxisArea().contains( x, y ) )
chartInfo.getChart().getYAxis().setAutoRanging( true );
if ( !chartInfo.getYAxisArea().contains( x, y ) )
chartInfo.getChart().getXAxis().setAutoRanging( true );
}
}
};
}
private EventHandler<MouseEvent> buildMouseEvent(Group panel) {
return event -> {
Figure3T rect = (Figure3T) event.getTarget();
if (this.checkState()) {
if (event.getButton() == MouseButton.PRIMARY) {
rect.take(true);
panel.getChildren().add(
this.buildMarkX(rect.getX(), rect.getY(), 50)
);
} else {
rect.take(false);
panel.getChildren().add(
this.buildMarkO(rect.getX(), rect.getY(), 50)
);
}
this.checkWinner();
this.checkState();
}
};
}
@Override
protected void initInput() {
onKey(KeyCode.W, () -> playerComponent.up());
onKey(KeyCode.S, () -> playerComponent.down());
getInput().addAction(new UserAction("Change Weapon") {
@Override
protected void onAction() {
playerComponent.changeWeapon();
weaponTexture.setImage(image("sprite_laser.png"));
bullets.textProperty().bind(getip("laser").asString("x %d"));
}
}, KeyCode.F);
getInput().addAction(new UserAction("Shoot") {
@Override
protected void onAction() {
playerComponent.shoot();
}
}, MouseButton.PRIMARY);
}
/**
* Handles mouse-released events on the given connector.
*
* @param event a mouse-released event
* @param connector the {@link GConnector} on which this event occured
*/
private void handleMouseReleased(final MouseEvent event, final GConnector connector) {
if (!event.getButton().equals(MouseButton.PRIMARY)) {
return;
}
if (targetConnector != null && skinLookup.lookupConnector(targetConnector) != null) {
skinLookup.lookupConnector(targetConnector).applyStyle(GConnectorStyle.DEFAULT);
}
sourceConnector = null;
removalConnector = null;
repositionAllowed = true;
tailManager.cleanUp();
event.consume();
}
/**
* @param controller
* Controller to use.
* @param codeArea
* Text editor events originate from.
*/
public ContextHandling(GuiController controller, CodeArea codeArea) {
this.codeArea = codeArea;
this.controller = controller;
codeArea.setOnMousePressed(e -> {
// Only accept right-click presses
if (e.getButton() != MouseButton.SECONDARY)
return;
// Reset
codeArea.setContextMenu(null);
// Mouse to location
CharacterHit hit = codeArea.hit(e.getX(), e.getY());
int charPos = hit.getInsertionIndex();
codeArea.getCaretSelectionBind().displaceCaret(charPos);
TwoDimensional.Position pos = codeArea.offsetToPosition(charPos,
TwoDimensional.Bias.Backward);
// Get selection
Object selection = getSelection(pos);
if (selection == null)
return;
if (consumer != null)
consumer.accept(selection);
});
}
DesktopWindow(Parent root) {
setBackground(new Background(new BackgroundFill(Color.BLUE, null, null)));
root.setTranslateY(15);
setOnMousePressed(e -> {
offsetX = e.getX();
offsetY = e.getY();
});
setOnMouseDragged(e -> {
if (e.getButton() != MouseButton.PRIMARY)
return;
setTranslateX(e.getSceneX() - offsetX);
setTranslateY(e.getSceneY() - offsetY);
});
getChildren().add(root);
}
@Test
public void getText() {
Button button = (Button) getPrimaryStage().getScene().getRoot().lookup(".button");
LoggingRecorder lr = new LoggingRecorder();
List<String> text = new ArrayList<>();
Platform.runLater(new Runnable() {
@Override
public void run() {
RFXButtonBase rfxButtonBase = new RFXButtonBase(button, null, null, lr);
Point2D sceneXY = button.localToScene(new Point2D(3, 3));
PickResult pickResult = new PickResult(button, sceneXY.getX(), sceneXY.getY());
Point2D screenXY = button.localToScreen(new Point2D(3, 3));
MouseEvent me = new MouseEvent(button, button, MouseEvent.MOUSE_PRESSED, 3, 3, sceneXY.getX(), screenXY.getY(),
MouseButton.PRIMARY, 1, false, false, false, false, true, false, false, false, false, false, pickResult);
rfxButtonBase.mouseButton1Pressed(me);
text.add(rfxButtonBase.getAttribute("text"));
}
});
new Wait("Waiting for button text.") {
@Override
public boolean until() {
return text.size() > 0;
}
};
AssertJUnit.assertEquals("Color", text.get(0));
}
/**
This is called when the mouse listener is invoked and a mouse release was the event
@param mousex x position of mouse relative to canvas
@param mousey y position of mouse relative to canvas
@param mb mouse button that was released
*/
protected void mouseReleased(int mousex, int mousey, @NotNull MouseButton mb) {
this.mouseButtonDown = MouseButton.NONE;
selection.setSelecting(false);
setContextMenu(null, mousex, mousey);
contextMenuControl = null;
if (mb == MouseButton.SECONDARY) {
if (menuCreator != null && selection.getFirst() != null) {
contextMenuControl = selection.getFirst();
setContextMenu(menuCreator.initialize(contextMenuControl.getComponent()), mousex, mousey);
} else if (canvasContextMenu != null) {
setContextMenu(canvasContextMenu, mousex, mousey);
}
} else {
if (hasDoubleClickedCtrl) {
doubleClickUpdateGroup.update(selection.getFirst());
}
}
}
@Override
protected void mouseReleased(int mousex, int mousey, @NotNull MouseButton mb) {
if (mousePressControl == null) {
return;
}
mousePressControl.getRenderer().mouseRelease();
if (mousePressControl.getRenderer().canHaveFocus()) {
focusHandler.setFocusedControl(mousePressControl);
}
}
/**
* Sets the objectives in the ListView
*
* @param objectives list of objectives in the package
*/
public static void setObjectives(ObservableList<Objective> objectives) {
instance.objectivesList.setCellFactory(param -> new DraggableListCell<>());
instance.objectivesList.setItems(objectives);
instance.objectivesList.getSelectionModel().selectedItemProperty().addListener(event -> {
instance.update();
});
instance.objectivesList.setOnMouseClicked(event -> {
if (event.getButton() == MouseButton.PRIMARY && event.getClickCount() == 2) {
instance.editObjective();
}
});
instance.update();
}
@Override
protected void initInput() {
onBtnDown(MouseButton.PRIMARY, () -> {
var worker = byType(WORKER).get(0);
worker.getComponent(GathererComponent.class).sendTo(getInput().getMousePositionWorld());
});
}
/**
* Handles mouse-released events on the given node.
*
* @param event a mouse-released event
* @param node the {@link GNode} on which this event occured
*/
private void handleNodeReleased(final MouseEvent event, final GNode node) {
if (!event.getButton().equals(MouseButton.PRIMARY)) {
return;
}
selectionDragManager.unbindPositions(node);
event.consume();
}
public static Subscription registerDoubleClickListener(javafx.scene.Node node, Runnable action) {
return ReactfxUtil.addEventHandler(
node,
MouseEvent.MOUSE_CLICKED,
e -> {
if (e.getButton() == MouseButton.PRIMARY
&& e.getClickCount() > 1) {
action.run();
e.consume();
}
});
}
public void addListener(ListView<VBox> vBoxListView) {
contextMenu = vBoxListView.getContextMenu();
vBoxListView.addEventHandler(MouseEvent.MOUSE_CLICKED, event -> {
if (event.getButton() == MouseButton.SECONDARY) {
ObservableList<VBox> selectedItems = vBoxListView.getSelectionModel().getSelectedItems();
if (selectedItems.size() != 1) {
vBoxListView.setContextMenu(null);
} else {
vBoxListView.setContextMenu(contextMenu);
}
}
});
}
/**
* Enables the double click action on this pane.
*
* This method identifies the node that was clicked and, if any, calls the
* appropriate consumer, i.e., vertex or edge consumers.
*/
private void enableDoubleClickListener() {
setOnMouseClicked((MouseEvent mouseEvent) -> {
if (mouseEvent.getButton().equals(MouseButton.PRIMARY)) {
if (mouseEvent.getClickCount() == 2) {
//no need to continue otherwise
if (vertexClickConsumer == null && edgeClickConsumer == null) {
return;
}
Node node = pick(SmartGraphPanel.this, mouseEvent.getSceneX(), mouseEvent.getSceneY());
if (node == null) {
return;
}
if (node instanceof SmartGraphVertex) {
SmartGraphVertex v = (SmartGraphVertex) node;
vertexClickConsumer.accept(v);
} else if (node instanceof SmartGraphEdge) {
SmartGraphEdge e = (SmartGraphEdge) node;
edgeClickConsumer.accept(e);
}
}
}
});
}
/**
* Constructor given a pair of eye photos.
*
* @param pair
* The eye photo pair.
* @param initialParentController
* The parent controller.
*/
@SuppressFBWarnings(value = "UR_UNINIT_READ", justification = "Is initialized via fxml")
public EyePhotoPairNode(final EyePhotoPair pair, final DisplayPhotosController initialParentController) {
mParentController = initialParentController;
mPair = pair;
FxmlUtil.loadFromFxml(this, FxmlConstants.FXML_EYE_PHOTO_PAIR_NODE);
mLabelDate.setText(pair.getDateDisplayString());
if (pair.getRightEye() != null) {
mImageViewRight.setImageView(getImageView(pair.getRightEye()));
}
if (pair.getLeftEye() != null) {
mImageViewLeft.setImageView(getImageView(pair.getLeftEye()));
}
mLabelDate.setOnMouseClicked(new EventHandler<MouseEvent>() {
@Override
public void handle(final MouseEvent event) {
if (event.getButton() != MouseButton.PRIMARY) {
return;
}
if (MainController.getInstance().isSplitPane()) {
return;
}
if (pair.isComplete()) {
DisplayImagePairController controller =
(DisplayImagePairController) FxmlUtil.displaySubpage(FxmlConstants.FXML_DISPLAY_IMAGE_PAIR, -1, true);
controller.setEyePhotos(pair);
}
}
});
mLabelDate.setContextMenu(createDateContextMenu());
}
/**
*
*/
public TextFieldCell() {
textField = new TextField();
textField.addEventFilter(KeyEvent.KEY_TYPED, hex_Validation(50));
textField.getStyleClass().add("hexTextFieldEditor");
textField.setEditable(false);
textField.setOnMouseClicked((MouseEvent mouseEvent) -> {
if (mouseEvent.getButton().equals(MouseButton.PRIMARY) && mouseEvent.getClickCount() == 2) {
handleMouseClickedEvent();
}
});
this.setGraphic(textField);
}
@FXML
protected void requestMoney(MouseEvent event) {
if (event.getButton() == MouseButton.SECONDARY || (event.getButton() == MouseButton.PRIMARY && event.isMetaDown())) {
// User right clicked or the Mac equivalent. Show the context menu.
addressMenu.show(addressLabel, event.getScreenX(), event.getScreenY());
} else {
// User left clicked.
try {
Desktop.getDesktop().browse(URI.create(uri()));
} catch (IOException e) {
GuiUtils.informationalAlert("Opening wallet app failed", "Perhaps you don't have one installed?");
}
}
}
private static Map<MouseButton, Integer> createMouseButtonMap() {
Map<MouseButton, Integer> cursorMap = new HashMap<MouseButton, Integer>();
cursorMap.put(MouseButton.NONE, 0);
cursorMap.put(MouseButton.PRIMARY, 1);
cursorMap.put(MouseButton.MIDDLE, 2);
cursorMap.put(MouseButton.SECONDARY, 3);
return cursorMap;
}
@Override
protected void initInput() {
onKey(KeyCode.W, () -> getGameWorld().getSingleton(EntityType.PLAYER).translateY(-5));
onKey(KeyCode.S, () -> getGameWorld().getSingleton(EntityType.PLAYER).translateY(5));
onBtnDown(MouseButton.PRIMARY, () -> {
double y = getGameWorld().getSingleton(EntityType.PLAYER).getY();
spawn("projectile", 0, y + 10);
spawn("projectile", 0, y + 50);
});
}