Erinevus lehekülje "ITI0011:praktikum 9 N14" redaktsioonide vahel

Allikas: Kursused
Mine navigeerimisribale Mine otsikasti
(Uus lehekülg: 'Tagasi ITI0011 lehele. == Üldine == Praktikum: 30.10.2014 kell 14:00 Teemad: * JavaFX * JavaFX klassi arvutites ** https://courses.cs.ttu.ee/pages/ITI0011:JavaFX#JavaFX_k...')
 
 
14. rida: 14. rida:
  
 
== Koodinäite ==
 
== Koodinäite ==
 +
 +
<source lang="java">
 +
import javafx.application.Application;
 +
import javafx.event.EventHandler;
 +
import javafx.scene.Node;
 +
import javafx.scene.Scene;
 +
import javafx.scene.control.Menu;
 +
import javafx.scene.control.MenuBar;
 +
import javafx.scene.control.MenuItem;
 +
import javafx.scene.input.MouseEvent;
 +
import javafx.scene.layout.BorderPane;
 +
import javafx.scene.layout.Pane;
 +
import javafx.scene.paint.Color;
 +
import javafx.scene.shape.Rectangle;
 +
import javafx.stage.Stage;
 +
 +
public class Main extends Application {
 +
 +
public static void main(String[] args) {
 +
// TODO Auto-generated method stub
 +
launch(args);
 +
}
 +
 +
private double oldX = 0.0;
 +
private double count = 0;
 +
 +
@Override
 +
public void start(Stage primaryStage) throws Exception {
 +
BorderPane root = new BorderPane();
 +
Scene scene = new Scene(root, 400, 400);
 +
 +
 +
MenuBar menuBar = new MenuBar();
 +
Menu menuFile = new Menu("File");
 +
Menu menuView = new Menu("View");
 +
MenuItem menuFileSave = new MenuItem("Save");
 +
menuBar.getMenus().add(menuFile);
 +
menuBar.getMenus().add(menuView);
 +
menuFile.getItems().add(menuFileSave);
 +
 +
root.setTop(menuBar);
 +
 +
primaryStage.setScene(scene);
 +
primaryStage.show();
 +
 +
Pane main = new Pane();
 +
root.setCenter(main);
 +
 +
Rectangle r = new Rectangle(100, 100, 40, 90);
 +
r.setFill(Color.TRANSPARENT);
 +
r.setStroke(Color.BLUE);
 +
main.getChildren().add(r);
 +
 +
EventHandler<MouseEvent> myHandler = new EventHandler<MouseEvent>() {
 +
 +
@Override
 +
public void handle(MouseEvent event) {
 +
if (event.getEventType() == MouseEvent.MOUSE_PRESSED) {
 +
//System.out.println(event);
 +
Rectangle r = new Rectangle(event.getX(), event.getY(), 20, 20);
 +
main.getChildren().add(r);
 +
oldX = event.getX();
 +
} else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) {
 +
count += 0.1;
 +
for (Node n : main.getChildren()) {
 +
if (n instanceof Rectangle) {
 +
Rectangle r = (Rectangle)n;
 +
// x = x + dx
 +
r.setX(r.getX() + (event.getX() - oldX));
 +
r.setWidth(r.getWidth() + count);
 +
r.setHeight(r.getHeight() + count);
 +
}
 +
}
 +
oldX = event.getX();
 +
}
 +
 +
}
 +
};
 +
 +
main.addEventHandler(MouseEvent.MOUSE_PRESSED, myHandler);
 +
main.addEventHandler(MouseEvent.MOUSE_DRAGGED, myHandler);
 +
 +
}
 +
 +
}
 +
</source>
  
 
== Exercise ==
 
== Exercise ==

Viimane redaktsioon: 30. oktoober 2014, kell 12:46

Tagasi ITI0011 lehele.

Üldine

Praktikum: 30.10.2014 kell 14:00

Teemad:

Koodinäite

<source lang="java"> import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.input.MouseEvent; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage;

public class Main extends Application {

public static void main(String[] args) { // TODO Auto-generated method stub launch(args); }

private double oldX = 0.0; private double count = 0;

@Override public void start(Stage primaryStage) throws Exception { BorderPane root = new BorderPane(); Scene scene = new Scene(root, 400, 400);


MenuBar menuBar = new MenuBar(); Menu menuFile = new Menu("File"); Menu menuView = new Menu("View"); MenuItem menuFileSave = new MenuItem("Save"); menuBar.getMenus().add(menuFile); menuBar.getMenus().add(menuView); menuFile.getItems().add(menuFileSave);

root.setTop(menuBar);

primaryStage.setScene(scene); primaryStage.show();

Pane main = new Pane(); root.setCenter(main);

Rectangle r = new Rectangle(100, 100, 40, 90); r.setFill(Color.TRANSPARENT); r.setStroke(Color.BLUE); main.getChildren().add(r);

EventHandler<MouseEvent> myHandler = new EventHandler<MouseEvent>() {

@Override public void handle(MouseEvent event) { if (event.getEventType() == MouseEvent.MOUSE_PRESSED) { //System.out.println(event); Rectangle r = new Rectangle(event.getX(), event.getY(), 20, 20); main.getChildren().add(r); oldX = event.getX(); } else if (event.getEventType() == MouseEvent.MOUSE_DRAGGED) { count += 0.1; for (Node n : main.getChildren()) { if (n instanceof Rectangle) { Rectangle r = (Rectangle)n; // x = x + dx r.setX(r.getX() + (event.getX() - oldX)); r.setWidth(r.getWidth() + count); r.setHeight(r.getHeight() + count); } } oldX = event.getX(); }

} };

main.addEventHandler(MouseEvent.MOUSE_PRESSED, myHandler); main.addEventHandler(MouseEvent.MOUSE_DRAGGED, myHandler);

}

} </source>

Exercise

Create an application which allows the user to draw a rectangle. There are several options how to achieve this:

  • using mouse dragging: the starting point is fixed when the dragging starts (mouse press), the opposite corner moves along while dragging. if the dragging ends, the rectangle is fixed.
  • using clicking: when clicking first time, one point is fixed, when clicking another time, the opposite corner is fixed (and rectangle is drawn).
  • some other way

Optional requirements:

  • more than one rectangle can be drawn