2017-06-25 7 views
0

ボタンをクリックして新しい図形(この例では円)を作成しようとしています。 私はまだ完全にJavaFXではないので、実行に小さな問題があります。私は既存の図形のサイズや色などを変更することに精通していますが、クリックで何かを作成する方法はわかりません。 私のコントローラと私の主、これまで:クリックボタンでサークルを作成するJavaFX

package javafxapplication1; 

import javafx.application.Application; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 
import javafx.stage.Stage; 

/** 
* 
* @author Tom 
*/ 
public class JavaFXApplication1 extends Application { 

    @Override 
    public void start(Stage stage) throws Exception { 
     Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 

     Scene scene = new Scene(root); 

     stage.setScene(scene); 
     stage.show(); 

    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

--------------------ここでは、コントローラを開始---------- -----

package javafxapplication1; 

import java.awt.Paint; 
import java.net.URL; 
import java.util.ResourceBundle; 
import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.paint.Color; 
import javafx.scene.shape.Circle; 

/** 
* 
* @author Tom 
*/ 
public class FXMLDocumentController implements Initializable { 

    @FXML 
    private Button btn; 


    @FXML 
    public void pressButton(ActionEvent event){ 
     Circle kreis1; 
     kreis1 = new Circle(200, 200, 10, Color.BLACK); 

    } 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     // TODO 
    }  
} 

私を助けてもらえますか?私はこれらの基本が必要ですが、オンラインで説明を見つけることはできません!あらかじめThx!

答えて

0

あなたは実際にはほとんどそれを行いましたが、2つの欠けているだけでした。

まず、FXMLDocument.fxmlは含まれていませんが、pressButtonのメソッドは、ボタンのonActionイベントにバインドされていると仮定しています。

ボタン操作でCircleを作成しました。これで、その円をペインに追加する必要があります。円を見ることができないペインを追加することなく。

たとえば、このfxmlがあった場合、

<AnchorPane fx:id="root" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8.0.111" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller"> 
    <children> 
     <Button fx:id="btn" layoutX="271.0" layoutY="331.0" onAction="#pressButton" text="Button" /> 
    </children> 
</AnchorPane> 

我々はfx:id="root"とAnchorPaneを持っていると我々はボタンアクションでそれに円を追加したいです。

は今私達のコントローラクラスでは、我々はAnchorPane

@FXML private AnchorPane root; 

は今ちょうどあなたのpressButton方法では、このルートにサークルを追加バインドする必要があります。

@FXML 
public void pressButton(ActionEvent event){ 
    Circle kreis1; 
    kreis1 = new Circle(200, 200, 10, Color.BLACK); 
    root.getChildren().add(kreis1); 
} 

これは、x、y座標200,200で円を作成します。

たとえば、このpressButtonメソッドでは、ペインにランダムな座標とランダムな色の円が作成されます。

@FXML 
public void pressButton(ActionEvent event) { 

    Random rand = new Random(); 
    int x = rand.nextInt(500) + 1; 
    int y = rand.nextInt(400) + 1; 
    int r = rand.nextInt(40) + 10; 
    double red = rand.nextDouble(); 
    double green = rand.nextDouble(); 
    double blue = rand.nextDouble(); 

    Circle kreis1; 
    kreis1 = new Circle(x, y, r, new Color(red, green, blue,1)); 

    root.getChildren().add(kreis1); 
} 
関連する問題