- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个应用程序,您可以选择绘制矩形或直线,并且还可以选择清除 Canvas 。清除 Canvas 按钮可以工作,但每次单击清除 Canvas 按钮时都会显示一堆异常。我只是想通过尝试确定它的含义来消除异常
我已经尝试仔细检查代码中的错误(任何语法或逻辑错误),但我仍然没有指出问题所在。我是一个相当新的程序员,所以我可能没有足够的知识来尝试找到它,我也要求其他人看一下,他们说一切似乎都很好。
以下是单击一键后的错误总数 ( /image/JYkNt.jpg )。
这是 GitHub 上的代码 ( https://github.com/DWER-afk/DWERR.git )
感谢所有帮助,并提前感谢您查看它。(刚刚添加的代码块和 Line、Main 和矩形都是单独的类)
`import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.control.*;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import org.w3c.dom.css.Rect;
import java.util.ArrayList;
public class Main extends Application {
// Layout sizes
int a = 0;
final double SCREEN_WIDTH = 1000;
final double SCREEN_HEIGHT = 800;
final double CONTROL_HEIGHT = -175;
private GraphicsContext gc, transgc;
private double sx, sy;
private double ex, ey;
private Color lineColor = Color.BLUE;
private ColorPicker lineColorPicker;
private TextField tf;
public double lines123 = 1.0;
// Reference to the Model
private ArrayList<Rectangle> rectangle1;
private ArrayList<Line> lines;
// TODO: Private Event Handlers and Helper Methods
private void pressHandler(MouseEvent me) {
sx = me.getX();
sy = me.getY();
}
private void releaseHandler(MouseEvent me) {
ex = me.getX();
ey = me.getY();
if(a == 0){Line l = new Line(sx,sy,ex,ey,lineColorPicker.getValue(),lines123);
lines.add(l);
for (Line l1 : lines)
l1.draw(gc);
transgc.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);}
if(a == 1){Rectangle rl = new Rectangle(sx,sy,ex,ey,lineColorPicker.getValue(),lines123);
rectangle1.add(rl);
for (Rectangle r1 : rectangle1)
r1.draw(gc);
transgc.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);}
}
/**
* This will draw a "Rubberband" line on the transparent surface above the drawing.
*
* @param me The mouse drag event - not used in method
*/
private void dragHandler(MouseEvent me) {
transgc.clearRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
ex = me.getX();
ey = me.getY();
if(a == 0){
Line tempLine = new Line(sx,sy,ex,ey,lineColorPicker.getValue(),lines123);
tempLine.draw(transgc);
}
if (a == 1){
Rectangle temprect = new Rectangle(sx,sy,ex,ey,lineColorPicker.getValue(),lines123);
temprect.draw(transgc);
}
}
/**
* This is where you create your components and the model and add event
* handlers.
*
* @param stage The main stage
* @throws Exception
*/
@Override
public void start(Stage stage) throws Exception {
Pane root = new Pane();
Scene scene = new Scene(root, SCREEN_WIDTH, SCREEN_HEIGHT, Color.DARKGRAY); // set the size here
stage.setTitle("Java Shape Drawer by Alexei Ougriniouk"); // set the window title here
stage.setScene(scene);
// TODO: Add your GUI-building code here
// 1. Create the model - No model yet
lines = new ArrayList<>();
rectangle1 = new ArrayList<>();
// 2. Create the GUI components - Just a CANVAS for now
Canvas c = new Canvas(SCREEN_WIDTH, SCREEN_HEIGHT - CONTROL_HEIGHT);
c.relocate(0, CONTROL_HEIGHT);
Canvas transc = new Canvas(SCREEN_WIDTH, SCREEN_HEIGHT);
transc.relocate(0, CONTROL_HEIGHT);
// Add JavaFX controls to top pane ...
Label colorLabel = new Label("Change line Colours");
colorLabel.relocate(100, 625);
lineColorPicker = new ColorPicker(lineColor);
lineColorPicker.relocate(100, 650);
Button resetButton = new Button("Reset Shape Colors");
resetButton.relocate(100,750);
resetButton.setOnAction(this::resetHandler);
Button clearstuff = new Button("Clear Canvas");
clearstuff.relocate(450,675);
clearstuff.setOnAction(this::clearHandler);
Button linedraw = new Button("line");
linedraw.relocate(350,635);
linedraw.setDefaultButton(true);
linedraw.setOnAction(this::lineHandler);
Button rectdraw = new Button("rectangle");
rectdraw.relocate(450,635);
rectdraw.setOnAction(this::rectHandler);
tf = new TextField("1");
tf.relocate(250,750);
// 3. Add components to the root
root.getChildren().addAll(c, transc, colorLabel, lineColorPicker, resetButton, tf,clearstuff,linedraw,rectdraw);
// Create the two graphics contexts
gc = c.getGraphicsContext2D();
transgc = transc.getGraphicsContext2D();
gc.setFill(Color.WHITE);
gc.fillRect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// 5. Add Event Handlers and do final setup
transc.addEventHandler(MouseEvent.MOUSE_PRESSED, this::pressHandler);
transc.addEventHandler(MouseEvent.MOUSE_RELEASED, this::releaseHandler);
transc.addEventHandler(MouseEvent.MOUSE_DRAGGED, this::dragHandler);
// 6. Show the stage
stage.show();
}
private void clearHandler(ActionEvent actionEvent){
gc.clearRect(0,0,SCREEN_WIDTH,SCREEN_HEIGHT);
for(Line l : lines) {
l.setLineColor(lineColorPicker.getValue());
lines.clear();
}
for(Rectangle rl : rectangle1 ) {
rl.setLineColor(lineColorPicker.getValue());
rectangle1.clear();
}
}
private void resetHandler(ActionEvent actionEvent) {
for(Line l : lines) {
l.setLineColor(lineColorPicker.getValue());
l.draw(gc);
}
for(Rectangle l : rectangle1) {
l.setLineColor(lineColorPicker.getValue());
l.draw(gc);
}
try {
int lineWidth = Integer.parseInt(tf.getText());
if(lineWidth > 0){
new Alert(Alert.AlertType.INFORMATION,
"VALUE APPROVED : Value in TextBox = " + String.valueOf(lineWidth)).showAndWait() ;
lines123 = (double) lineWidth;
}
if(lineWidth <= 0){
new Alert(Alert.AlertType.ERROR,
"Could not convert " + tf.getText() + " to an integer due to it being negative").showAndWait();
}
}
catch (NumberFormatException ex)
{
new Alert(Alert.AlertType.ERROR,
"Could not convert " + tf.getText() + " to an integer").showAndWait();
}
}
private void lineHandler(ActionEvent actionEvent) {
a = 0;
if(a == 0){for(Line l : lines) {
l.setLineColor(lineColorPicker.getValue());
l.draw(gc);
}}
}
private void rectHandler(ActionEvent actionEvent) {
a = 1;
if(a == 1){for(Rectangle l : rectangle1) {
l.setLineColor(lineColorPicker.getValue());
l.draw(gc);
}}
}
/**
* Make no changes here.
* @param args unused
*/
public static void main(String[] args) {
launch(args);
}
}
'
这是 Line 类
public class Line {
Main sc = new Main();
private double sx, sy, ex, ey;
private Color lineColor;
double lineswidth = sc.lines123;
public Line(double sx, double sy, double ex, double ey, Color lineColor, double lineswidth)
{
this.sx = sx;
this.sy = sy;
this.ex = ex;
this.ey = ey;
this.lineColor = lineColor;
this.lineswidth = lineswidth;
}
/**
* Draw a rectangle to the Graphics context
* @param gc the graphics context of the FX component
*/
public void draw(GraphicsContext gc) {
gc.setStroke(lineColor);
gc.setLineWidth(lineswidth);
// For circle drawing must get the smaller of the two X values, same for Y
gc.strokeLine (sx,sy,ex,ey);
}
public void setLineColor(Color newColor)
{
lineColor = newColor;
}
@Override
public String toString() {
return "Line{}" + super.toString();
}
}
这是矩形类
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.paint.Color;
public class Rectangle {
Main sc = new Main();
private double sx, sy, ex, ey;
private Color lineColor;
double lineswidth = sc.lines123;
public Rectangle(double sx, double sy, double ex, double ey, Color lineColor, double lineswidth)
{
this.sx = sx;
this.sy = sy;
this.ex = ex;
this.ey = ey;
this.lineColor = lineColor;
this.lineswidth = lineswidth;
}
/**
* Draw a rectangle to the Graphics context
* @param gc the graphics context of the FX component
*/
public void draw(GraphicsContext gc) {
{
gc.setStroke(Color.BLACK);
gc.strokeRect(sx,sy,ex,ey);
gc.setLineWidth(lineswidth);
// For circle drawing must get the smaller of the two X values, same for Y
gc.setFill(lineColor);
gc.fillRect(sx,sy,ex,ey);
}
}
public void setLineColor(Color newColor)
{
lineColor = newColor;
}
@Override
public String toString() {
return "Line{}" + super.toString();
}
}
最佳答案
在两个绘图函数中,在开始时执行以下操作:double sx = this.sx, sy = this.sy, ex = this.ex, ey = this.ey;
现在,绘制时变量无法更改。
关于java - 单击按钮后弹出异常(java fx),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57413428/
我连续有 11 个图像,如果鼠标悬停在其中一个图像上,我希望弹出一个弹出窗口。所以每 11 个图像都有不同的弹出窗口。我已经有一些代码可以执行此操作,但它仅适用于第一张图像。 代码:index.htm
是否可以从 NSColorWell 制作一个 NSColorPanel“弹出”,几乎像一个弹出菜单? 我不喜欢它作为调色板的实现方式,因为有时它与哪个 NSColorWell 关联并不明显。 谢谢!
我正在考虑一个想法,基本上我想要一个带有 NSPopoverController 的 NSStatusItem 。我读到了人们遇到的所有问题,但我只是想尝试一下。现在有干净的方法吗?我见过的所有版本都
如何获取 JS 打开的弹出窗口的 url。这是我的代码: var _url = 'someurlhere'; var popupwindow = window.open(_url, "Popu
我正在设计一个网页,我希望当用户单击链接时,弹出窗口(新窗口)将打开一个链接网页。我的代码如下所示 function win(add,w,h) { window.open(add,"","widt
我正在寻找 C 中的简单堆栈实现,并找到了类似的东西: void pop(struct stack **top) { struct stack *temp; temp = malloc(s
我正在尝试使用 paypal 实现登录,我有 2 个不同的主机域 1- www.example.com 2- www.example.de 对于 paypal,我需要为此目的选择一个返回 URL,我选
我正在尝试找出如何复制此处显示的“弹出式” View 动画:https://imgur.com/a/irFqdiP .我正在使用当前代码来显示我的 viewController,但目前只有一个淡入淡出
有谁知道在 Windows 2000 或更高版本上以编程方式关闭 CD 托盘的方法?打开 CD 托盘存在,但我似乎无法关闭它,尤其是在 W2k 下。 如果可能的话,我特别想从批处理文件中寻找一种方法来
当您访问http://www.daniweb.com时你得到一个弹出窗口,这叫什么 + 知道怎么做吗? 感谢您的回复,只有模态加载动画的最简单方法是什么,即页面加载时动画显示以及动画何时完成? ASP
我正在为 Unity 引擎中的音频过滤器创建一个 C# 脚本。 我的问题是,在通过我的过滤器运行后,生成的音频具有一致且频繁的“咔哒声”、“砰砰声”或“跳过声”。听起来有点像旧 radio 。 我不确
我必须隐藏浏览器的地址栏。我正在使用这段代码: var winFeature = 'location=no,toolbar=no,menubar=no,scrollbars=yes,r
推荐一个button 弹起pickerview的源码,也可以作为工具类使用。 利用inputview 做键盘弹起动画。该如何做呢? 1.继承uiview 2.重写属性&方法
我在这里有一个问题,我已经工作了几个小时。 我正在导入一个 Excel 文件,并使用此代码来执行此操作: Dim objExcel As Excel.Application Di
我基本上是从 UITableViewController 推送 UIView,它包含的只是 UIWebView。但是,当我删除 UIView 以返回到 UITableView 时,应用程序崩溃了。 -
我有几个由导航 Controller 控制的 View Controller 。 例如,viewController A 和 viewController B 都可以将 viewController
我使用新的Gmail API为用户创建草稿。 API响应提供了新创建的消息ID。 然后,我可以使用URL https://mail.google.com/mail/#drafts?compose=[m
Redis列表实现了哪种内部数据结构以实现这一目的?链表将需要O(n)索引,而数组将需要O(n)左/右推/弹出。 最佳答案 根据official documentation,它们被实现为linked
我正在使用 WPF Popup 控件,它显示背景为黑色。我在其中放置了一个 StackPanel 并设置了 Background="Transparent",但这没有帮助。
我希望页面内的容器在事件时占据页面的整个宽度并覆盖在其他所有内容上。这是我目前所拥有的,但它没有按我想要的方式工作: $(function() { $('.main a').click( fu
我是一名优秀的程序员,十分优秀!