基本アプリケーションを持っています。おもちゃボックスのようなもので、シェイプをダブルクリックすると画面上でシェイプを移動させる以外は何もしません。それを前景に持っていく。私は、画面上の図形の現在の状態を保存し、彼らがいたとして、それらをアップロード持ってできるようにしたい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();
}
}
- 「新しい、 『オープン』、 『保存』メニュー項目を持つメニューもあります「オープン」。
を押した時に、私は、誰もがいくつかのガイダンスを提供したり、正しい方向に私を指すことができ、これに関する有益な何かを見つけるように見えることはできません?どのような援助がいただければ幸いです!
私はFxmlではなくFXのやり方をするのが本当に好きです。それは同じアプローチで可能ですか? – Treeno1
私はあなたが意味することを理解していません。 「FX方法」とは何ですか? – jewelsea
私はそれを説明する最善の方法を推測します - http://www.javafxtutorials.com/tutorials/switching-to-different-screens-in-javafx-and-fxml/。基本的には、シーンビルダーを使用するFXMLまたはjavaFXをコーディングするだけで、2つのアプローチを使用してフレームを切り替えることについてのデモです。 FXMLの話を聞くとすぐに、シーンビルダーの使用を前提としていました。本当にFXMLの私の唯一の経験でした。私は残念なことにあまり良くはありません。その例に似ています。 FXMLを使わずにコードを書く方法はありますか? – Treeno1