我正在尝试在netbeans中使用javaFX做一个滑动难题(https://www.youtube.com/watch?v=GqcVqzq6GJ0 6:05)。我不知道如何为它添加颜色。我想在类VlagView中添加颜色。以下是我的所有课程以及到目前为止我已经尝试过的内容。
主要
package vlag;
import vlag.VlagController;
import vlag.VlagModel;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import vlag.VlagView;
public class Main extends Application {
@Override
public void start(Stage stage) throws Exception
{
// model
VlagModel model = new VlagModel();
// FXML view
FXMLLoader loader = new FXMLLoader(VlagView.class.getResource("FXMLVlagView.fxml"));
Parent root = (Parent) loader.load();
// hoofdvenster
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
root.requestFocus();
// VlagController
VlagController controller = loader.getcontroller();
// MVC aan elkaar linken
controller.setModel(model);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
launch(args);
}
}
控制器
package vlag;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
/**
*
* @author Nathan Deveux
*/
public class VlagController {
private VlagModel model;
private VlagView view;
@FXML
private ResourceBundle resources;
@FXML
private URL location;
@FXML
private AnchorPane myPane;
@FXML
private Button button1;
@FXML
private Button button2;
@FXML
private Button button3;
@FXML
private Button button12;
@FXML
private Button button11;
@FXML
private Button button10;
@FXML
private Button button4;
@FXML
private Button button5;
@FXML
private Button button6;
@FXML
private Button button9;
@FXML
private Button button8;
@FXML
private Button button7;
@FXML
private Label l;
@FXML
void initialize() {
button1.setOnaction(evt -> knop1());
button2.setOnaction(evt -> knop2());
button3.setOnaction(evt -> knop3());
button4.setOnaction(evt -> knop4());
button5.setOnaction(evt -> knop5());
button6.setOnaction(evt -> knop6());
button7.setOnaction(evt -> knop7());
button8.setOnaction(evt -> knop8());
button9.setOnaction(evt -> knop9());
button10.setOnaction(evt -> knop10());
button11.setOnaction(evt -> knop11());
button12.setOnaction(evt -> knop12());
}
public void setModel(VlagModel vlag)
{
model = vlag;
view = new VlagView(model);
myPane.getchildren().add(view);
}
public void knop1(){
model.schuif1();
view.update();
}
public void knop2(){
model.schuif2();
view.update();
}
public void knop3(){
model.schuif3();
view.update();
}
public void knop4(){
model.schuif4();
view.update();
}
public void knop5(){
model.schuif5();
view.update();
}
public void knop6(){
model.schuif6();
view.update();
}
public void knop7(){
model.schuif7();
view.update();
}
public void knop8(){
model.schuif8();
view.update();
}
public void knop9(){
model.schuif9();
view.update();
}
public void knop10(){
model.schuif10();
view.update();
}
public void knop11(){
model.schuif11();
view.update();
}
public void knop12(){
model.schuif12();
view.update();
}
}
TileMODEL
package vlag;
import java.util.Random;
/**
*
* @author Nathan Deveux
*/
public class VakjeModel {
private double zijde;
private int x;
private int y;
public VakjeModel(int x,int y,double zijde)
{
this.x = x;
this.y = y;
this.zijde = zijde;
}
/**
* @return the zijde
*/
public double getZijde() {
return zijde;
}
/**
* @param zijde the zijde to set
*/
public void setZijde(double zijde) {
this.zijde = zijde;
}
/**
* @return the x
*/
public int getX() {
return x;
}
/**
* @return the y
*/
public int getY() {
return y;
}
}
TileVIEW
package vlag;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import java.util.Random;
import java.util.Arrays;
/**
*
* @author Nathan Deveux
*/
public class VakjeView extends Region{
private VakjeModel vakjeModel;
public VakjeView(VakjeModel vakjeModel) {
this.vakjeModel = vakjeModel;
update();
}
public void update(){
Rectangle vakje = new Rectangle(40,40);
getchildren().addAll(vakje);
}
}
flagMODEL
package vlag;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;
/**
*
* @author Nathan Deveux
*/
public class VlagModel {
private ArrayList<VakjeModel> vakjes;
public ArrayList<VakjeModel> getVakjes(){
vakjes = new ArrayList<>();
vakjes.add(new VakjeModel(0,40));
vakjes.add(new VakjeModel(0,1,2,40));
vakjes.add(new VakjeModel(1,40));
vakjes.add(new VakjeModel(2,40));
Collections.shuffle(vakjes);
return vakjes;
}
public void schuif6(){
if(vakjes.get(8).getY() == 2 && vakjes.get(8).getX() == 2){
int i = vakjes.get(8).getX();
i = 1;
}else if(vakjes.get(2).getY() == 2 && vakjes.get(2).getX() == 0){
int j = vakjes.get(2).getX();
j = 2;
}else if(vakjes.get(5).getY() == 2 && vakjes.get(5).getX() == 1){
int h = vakjes.get(5).getX();
h = 0;
}
}
public void schuif5(){
if(vakjes.get(7).getY() == 1 && vakjes.get(7).getX() == 2){
int i = vakjes.get(7).getX();
i = 1;
}else if(vakjes.get(1).getY() == 1 && vakjes.get(1).getX() == 0){
int j = vakjes.get(1).getX();
j = 2;
}else if(vakjes.get(4).getY() == 1 && vakjes.get(4).getX() == 1){
int h = vakjes.get(4).getX();
h = 0;
}
}
public void schuif4(){
if(vakjes.get(6).getY() == 0 && vakjes.get(6).getX() == 2){
int i = vakjes.get(6).getX();
i = 1;
}else if(vakjes.get(0).getY() == 0 && vakjes.get(0).getX() == 0){
int j = vakjes.get(0).getX();
j = 2;
}else if(vakjes.get(3).getY() == 0 && vakjes.get(3).getX() == 1){
int h = vakjes.get(3).getX();
h = 0;
}
}
public void schuif12(){
if(vakjes.get(6).getY() == 0 && vakjes.get(6).getX() == 2){
int i = vakjes.get(6).getX();
i = 0;
}else if(vakjes.get(0).getY() == 0 && vakjes.get(0).getX() == 0){
int j = vakjes.get(0).getX();
j = 1;
}else if(vakjes.get(3).getY() == 0 && vakjes.get(3).getX() == 1){
int h = vakjes.get(3).getX();
h = 2;
}
}
public void schuif11(){
if(vakjes.get(7).getY() == 1 && vakjes.get(7).getX() == 2){
int i = vakjes.get(7).getX();
i = 0;
}else if(vakjes.get(1).getY() == 1 && vakjes.get(1).getX() == 0){
int j = vakjes.get(1).getX();
j = 1;
}else if(vakjes.get(4).getY() == 1 && vakjes.get(4).getX() == 1){
int h = vakjes.get(4).getX();
h = 2;
}
}
public void schuif10(){
if(vakjes.get(8).getY() == 2 && vakjes.get(8).getX() == 2){
int i = vakjes.get(8).getX();
i = 0;
}else if(vakjes.get(2).getY() == 2 && vakjes.get(2).getX() == 0){
int j = vakjes.get(2).getX();
j = 1;
}else if(vakjes.get(5).getY() == 2 && vakjes.get(5).getX() == 1){
int h = vakjes.get(5).getX();
h = 2;
}
}
public void schuif1(){
if(vakjes.get(2).getY() == 2 && vakjes.get(2).getX() == 0){
int i = vakjes.get(2).getY();
i = 0;
}else if(vakjes.get(1).getY() == 1 && vakjes.get(1).getX() == 0){
int j = vakjes.get(1).getY();
j = 2;
}else if(vakjes.get(0).getY() == 0 && vakjes.get(0).getX() == 0){
int h = vakjes.get(0).getY();
h = 1;
}
}
public void schuif2(){
if(vakjes.get(5).getY() == 2 && vakjes.get(5).getX() == 1){
int i = vakjes.get(5).getY();
i = 0;
}else if(vakjes.get(4).getY() == 1 && vakjes.get(4).getX() == 1){
int j = vakjes.get(4).getY();
j = 2;
}else if(vakjes.get(3).getY() == 0 && vakjes.get(3).getX() == 1){
int h = vakjes.get(3).getY();
h = 1;
}
}
public void schuif3(){
if(vakjes.get(8).getY() == 2 && vakjes.get(8).getX() == 2){
int i = vakjes.get(8).getY();
i = 0;
}else if(vakjes.get(7).getY() == 1 && vakjes.get(7).getX() == 2){
int j = vakjes.get(7).getY();
j = 2;
}else if(vakjes.get(6).getY() == 0 && vakjes.get(6).getX() == 2){
int h = vakjes.get(6).getY();
h = 1;
}
}
public void schuif9(){
if(vakjes.get(2).getY() == 2 && vakjes.get(2).getX() == 0){
int i = vakjes.get(2).getY();
i = 1;
}else if(vakjes.get(1).getY() == 1 && vakjes.get(1).getX() == 0){
int j = vakjes.get(1).getY();
j = 0;
}else if(vakjes.get(0).getY() == 0 && vakjes.get(0).getX() == 0){
int h = vakjes.get(0).getY();
h = 2;
}
}
public void schuif8(){
if(vakjes.get(5).getY() == 2 && vakjes.get(5).getX() == 1){
int i = vakjes.get(5).getY();
i = 1;
}else if(vakjes.get(4).getY() == 1 && vakjes.get(4).getX() == 1){
int j = vakjes.get(4).getY();
j = 0;
}else if(vakjes.get(3).getY() == 0 && vakjes.get(3).getX() == 1){
int h = vakjes.get(3).getY();
h = 2;
}
}
public void schuif7(){
if(vakjes.get(8).getY() == 2 && vakjes.get(8).getX() == 2){
int i = vakjes.get(8).getY();
i = 1;
}else if(vakjes.get(7).getY() == 1 && vakjes.get(7).getX() == 2){
int j = vakjes.get(7).getY();
j = 0;
}else if(vakjes.get(6).getY() == 0 && vakjes.get(6).getX() == 2){
int h = vakjes.get(6).getY();
h = 2;
}
}
}
flagVIEW
package vlag;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.ChoiceBox;
import javafx.scene.layout.Region;
import javafx.scene.paint.Color;
import javafx.scene.shape.Circle;
import javafx.scene.shape.Rectangle;
/**
*
* @author Nathan Deveux
*/
public class VlagView extends Region{
private VlagModel model;
//public static final int SIZE = 40;
public VlagView(VlagModel vlagModel) {
model = vlagModel;
update();
}
public void update() {
getchildren().clear();
ArrayList<VakjeModel> vakjes = model.getVakjes();
int dx = 0;
int dy = 0;
for(VakjeModel v : vakjes){
VakjeView vv = new VakjeView(v);
vv.setTranslateX(dx*50);
vv.setTranslateY(dy*50);
dx++;
if (dx > 2) {
dx = 0;
dy++;
}
getchildren().add(vv);
}
}
public int welkVakjeLigtOp(double x,double y) {
int kolom = (int)(x / 50);
int positieX = ((int)x) % 50;
if (positieX > 40) return -1;
int rij = (int)(y/50);
int positieY = ((int)y) % 50;
if (positieY > 40) return -1;
int vakjenr = kolom + rij*3;
if (vakjenr > 9) return -1;
return vakjenr;
}
}
我尝试过的事情
if(dx == 25 && dy == 25){
vv.setfill(Color.RED);
}else if(dx == 75 && dy == 25){
vv.setfill(Color.YELLOW);
}else if(dx == 125 && dy == 25){
vv.setfill(Color.YELLOW);
}else if(dx == 25 && dy == 75){
vv.setfill(Color.BLACK);
}else if(dx == 75 && dy == 75){
vv.setfill(Color.YELLOW);
}else if(dx == 125 && dy == 75){
vv.setfill(Color.BLACK);
}else if(dx == 25 && dy == 125){
vv.setfill(Color.RED);
}else if(dx == 75 && dy == 125){
vv.setfill(Color.RED);
}else if(dx == 125 && dy == 125){
vv.setfill(Color.BLACK);
ObservableList<Color> colors = FXCollections.observableArrayList(Color.YELLOW,Color.YELLOW,Color.RED,Color.BLACK,Color.BLACK);
FXCollections.shuflle(colors);
ChoiceBox<Color> box = new ChoiceBox<>(colors);
https://ibb.co/LgYK95d(FXML)