У меня есть базовое приложение, похожее на игрушечную коробку. На самом деле это не делает ничего, кроме того, что вы можете перемещать фигуры вокруг экрана, если вы дважды щелкните по форме, выводит его на передний план. Существует также меню с меню пунктами «Новая„открытым“,„Сохранить“-Сохранение фигур в файл, нарисованных на границе панели в javafx
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.control.SeparatorMenuItem;
import javafx.scene.layout.BorderPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class RandCMove extends Application
{
public static void main(String [] args)
{
launch(args);
}
public void start(Stage primaryStage)
{
BorderPane root = new BorderPane();
MenuBar menuBar = new MenuBar();
menuBar.prefWidthProperty().bind(primaryStage.widthProperty());
Menu fileMenu = new Menu("File");
MenuItem newMenuItem = new MenuItem("New");
MenuItem openMenuItem = new MenuItem("Open");
MenuItem saveMenuItem = new MenuItem("Save");
MenuItem exitMenuItem = new MenuItem("Exit");
fileMenu.getItems().addAll(newMenuItem,openMenuItem,saveMenuItem,
new SeparatorMenuItem(),exitMenuItem);
menuBar.getMenus().add(fileMenu);
Rectangle rect = new Rectangle();
rect.setWidth(200);
rect.setHeight(200);
rect.setArcHeight(20);
rect.setArcWidth(20);
rect.setFill(Color.RED);
rect.setX(200);
rect.setY(100);
root.setTop(menuBar);
root.getChildren().add(rect);
Circle circle = new Circle(
300,300,100);
Text text = new Text(150,150,"Text");
Font phosphate = Font.font("Phosphate",150);
text.setFont(phosphate);
text.setTranslateY(circle.getBoundsInParent().getMinY()+10);
root.getChildren().add(text);
//Positions the circle under the rectangle
circle.setTranslateY(rect.getBoundsInParent().getMinY()+30);
root.getChildren().add(circle);
// Moves shapes depending on if the cursor on the particular shape
// Brings shape to the front using double click
root.setOnMouseMoved(e ->
{
if(rect.contains(e.getX(),e.getY()))
rect.setOnMouseDragged(f ->{
rect.setX(f.getX());
rect.setY(f.getY());
});
rect.setOnMouseClicked(f ->{
if(f.getClickCount() >= 2)
rect.toFront();
});
if(circle.contains(e.getX(),e.getY()))
circle.setOnMouseDragged(f->{
circle.setCenterX(f.getX());
circle.setCenterY(f.getY());
});
circle.setOnMouseClicked(f ->{
if(f.getClickCount() >= 2)
circle.toFront();
});
if(text.contains(e.getX(),e.getY()))
text.setOnMouseDragged(f ->{
text.setX(f.getX());
text.setY(f.getY());
});
text.setOnMouseClicked(f ->{
if(f.getClickCount() >= 2)
text.toFront();
});
});
Scene scene = new Scene(root,600,600);
primaryStage.setScene(scene);
primaryStage.show();
}
}
Я хочу, чтобы иметь возможность сохранить текущее состояние фигур на экране, и у них нагрузки, как они были при нажатии «Открыть».
Я не могу найти что-нибудь полезное на этом, может кто-нибудь дать некоторые ориентиры или мне точку в правильном направлении? Любая помощь будет оценена по достоинству!
Я бы предпочел сделать это скорее как FX, а не Fxml. Возможно ли с тем же подходом? – Treeno1
Я не понимаю, что вы имеете в виду. Что такое «способ FX»? – jewelsea
Я думаю, лучший способ для меня объяснить это - http://www.javafxtutorials.com/tutorials/switching-to-different-screens-in-javafx-and-fxml/. по сути, демонстрацию о переключении кадров с использованием двух подходов, с использованием FXML с использованием построителя сцен или просто кодирования javaFX. Как только я услышал FXML, я предположил, что вы имели в виду использование построителя сцен, так как это действительно был мой единственный опыт работы с FXML. к сожалению, я не очень хорош. Так похоже на этот пример. Есть ли способ, которым я могу просто его кодировать без использования FXML, это то, что я хотел сказать? – Treeno1