javafx Java FX拖动和删除行
今天我需要您对JavaFX2的帮助。我做了一个练习,用鼠标画线,然后用CTRL和leftMouse按住并拖动使它们可以拖动,然后用CTRL+单击的rightMouse删除它们。我了解一个算法,但不知道如何在JavaFX上发布它。我写了绘图的代码,但另一个函数我不知道如何实现。我明白,为了删除,我需要知道我要删除的线的索引,为此,我取了靠近指针的线的坐标,然后删除这条线。要拖动,我需要知道selectedLine(如删除),但在拖动过程中会更改行的开始坐标和结束坐标。当然,要知道我选择了我想要的线条,我应该改变所选线条的颜色
我的代码:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.input.MouseButton;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.stage.Stage;
import javax.swing.JOptionPane;
import javafx.event.EventHandler;
public class Main extends Application {
Path path;
public static boolean ctrl = false;
@Override
public void start(Stage primaryStage) throws Exception{
BorderPane root = new BorderPane();
primaryStage.setTitle("Paint");
Scene scene = new Scene(root, 500 , 500);
path = new Path();
path.setStroke(Color.BLACK);
primaryStage.setScene(scene);
primaryStage.show();
Pane pane = new Pane();
root.setCenter(pane);
scene.setOnMousePressed(mh);
scene.setOnMouseDragged(mh);
scene.setOnMouseReleased(mh);
scene.setOnMouseMoved(mh);
scene.setOnKeyPressed(eh);
scene.setOnKeyReleased(eh);
root.getChildren().add(path);
}
EventHandler<MouseEvent> mh = new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent e) {
if (e.getEventType() == MouseEvent.MOUSE_PRESSED) {
path.getElements().add(
new MoveTo(e.getX(), e.getY()));
} else if (e.getEventType() == MouseEvent.MOUSE_DRAGGED) {
if (e.getButton() == MouseButton.PRIMARY) {
path.getElements().add(
new LineTo(e.getX(), e.getY()));
} else if(ctrl && e.getButton() == MouseButton.PRIMARY){
}
} else if (e.getEventType() == MouseEvent.MOUSE_CLICKED) {
path.getElements().add(
new LineTo(e.getX(), e.getY()));
} else if(e.getEventType() == MouseEvent.MOUSE_RELEASED){
if (ctrl && e.getButton() == MouseButton.SECONDARY) {
// System.out.println("here");
// System.out.println(path.getElements());
}
} else if(e.getEventType() == MouseEvent.MOUSE_MOVED){
}
}
};
EventHandler<KeyEvent> eh = new EventHandler<KeyEvent>(){
@Override
public void handle(KeyEvent t) {
if (t.getEventType() == KeyEvent.KEY_PRESSED){
if (t.getCode() == KeyCode.ESCAPE) {
int result = JOptionPane.showConfirmDialog(null, "Are you sure you want to exit?",
"confirmation", JOptionPane.YES_NO_OPTION);
if (result == JOptionPane.YES_OPTION) {
System.exit(0);
}
}
if (t.getCode() == KeyCode.CONTROL){
ctrl = true;
// System.out.println("CTRL works");
}
}
if (t.getEventType() == KeyEvent.KEY_RELEASED){
if (t.getCode() == KeyCode.CONTROL) {
ctrl = false;
}
}
}
};
public static void main(String[] args) {
launch(args);
}
}
请帮我用javafx制作,我用awt/swing做的,但是现在我不能用了
共 (0) 个答案