【发布时间】:2018-11-05 02:03:15
【问题描述】:
我目前正在制作一个绘画应用程序,并创建了几个正在工作的工具,但是在尝试创建一个 “画直线”工具
所以我基本上从 A 点到 B 点画一条线,它可以工作,这条线就在那里,但是,当我切换我的其他工具(绘制圆形、矩形等)时,形状与直线同时绘制-line 尽管“画线”按钮被关闭。
下面的代码将允许您绘制直线,您可以尝试打开和关闭不同的按钮,当您将光标拖过窗格时仍会绘制直线。
任何人都知道我犯了什么样的错误,以及任何可能的修复和/或替代解决方案?
(事件处理程序在那里,以便我可以选择绘制的形状,如果需要,稍后更改它们,此代码是我的绘画应用程序的精简版本)
public class DrawLine extends Application {
@Override
public void start(Stage primaryStage) {
ToggleButton lineButton = new ToggleButton ("Draw Line");
ToggleButton Button = new ToggleButton ("Button with no function");
BorderPane pane = new BorderPane();
ToolBar toolbar = new ToolBar();
Scene scene = new Scene(pane, 1200, 800);
pane.setLeft(toolbar);
toolbar.getItems().addAll(lineButton, Button);
// Draw Line
scene.addEventHandler(MouseEvent.MOUSE_CLICKED, me -> {
if(lineButton.isSelected() & me.getButton().equals(MouseButton.PRIMARY) ) {
scene.setOnMousePressed(event -> {
Line line = new Line();
line.setStartX(event.getX());
line.setStartY(event.getY());
scene.setOnMouseDragged(e->{
line.setEndX(e.getX());
line.setEndY(e.getY());
});
pane.getChildren().add(line);
});
}
});
primaryStage.setTitle("Paint App");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch();
}
}
【问题讨论】:
-
首先,请遵循java命名约定。您的
Button被突出显示为一个类,因为它以大写字母开头,即使它是一个变量。 -
@Kartik 感谢它,但是,我通常遵循命名约定,我只是匆忙编写此代码并导致错误:)
-
别担心,点赞
标签: java javafx mouseevent line draw