[英]How do I insert all my shapes into an array?
我正在尝试建立一个电影院预订者,我必须在这里选择座位。 我当时正在考虑将所有矩形放置在一个数组中,以便以后使用。单击座位时,它应该检查是否预订了左右座位。 在这里,数组索引应该对我有帮助。 但是我不知道如何进入这个阶段。 (参见图片。)
采取这种情况:单击一个矩形(代表一个座位)。 仅当它不是红色时才更改颜色。 所以Seats [] []。checkNeighbourColor或类似的东西。 看图片
package sample;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.MouseEvent;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
import java.awt.*;
import java.util.ArrayList;
public class Main extends Application {
private int seats = 12;
private int rows = 8;
private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); //gets screen resolution data
public static void main(String[] args) {
Application.launch(args);
}
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("");
Group root = new Group();
Scene scene = new Scene(root, screenSize.getWidth()/4, screenSize.getHeight()/3, Color.WHITE);
for (int i = 0; i<= seats; i++)
{
Rectangle r = new Rectangle();
r.setFill(Color.GREEN);
r.setX(scene.getWidth()/5+i*30);
r.setY(scene.getHeight()/5);
r.setWidth(screenSize.getHeight()/80);
r.setHeight(screenSize.getHeight()/80);
root.getChildren().add(r);
for (int q = 0; q<=rows; q++)
{
Rectangle s = new Rectangle();
s.setFill(Color.GREEN);
s.setX(scene.getWidth()/5+i*30);
s.setY(scene.getHeight()/5+q*30);
s.setWidth(screenSize.getHeight()/80);
s.setHeight(screenSize.getHeight()/80);
root.getChildren().add(s);
s.setOnMouseClicked(event ->{
s.setFill(Color.BLACK);
});
}
}
primaryStage.setScene(scene);
primaryStage.show();
}
}
我不清楚您要问什么,但您不能只是做
private Rectangle[][] rectangles = new Rectangle[seats][rows];
然后做
rectangles[i][q] = s ;
对于您的听众,您可以做
final int row = i ;
final int seat = q ;
s.setOnMouseClicked(event -> {
// check rectangles[row-1][seat] and rectangles[row+1][seat] as needed,
// checking for range of row first
});
撇开:不要将AWT和JavaFX混合使用。 使用Screen
API获取JavaFX中物理屏幕的尺寸。
好吧,我发现了我的错误。 这是一个简单的ArrayOutOfBound(我的for循环中的语句是错误的),但是谢谢大家的帮助:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.