我如何将所有形状插入阵列中



我正在尝试建立一个电影记录官,我必须在其中选择座位。我正在考虑将所有矩形放在阵列中,以便以后使用它,在单击座位时,应该检查左右座椅是否已预订。在这里,阵列索引应该帮助我。但是,我无法弄清楚如何进入这个阶段。(请参阅图片。)

采用此情况:您单击矩形(代表座椅)。它只会改变颜色,而不是红色。所以座位[] []。

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中物理屏幕的维度。

好吧,我发现了我的错误。这是一个简单的阵列(我的前面的说明是错误的),但是谢谢大家的帮助:)

最新更新