나는 시어터를 만들려고 노력하고있다. 좌석을 선택해야한다. 나는 배열에 모든 직사각형을 배치하는 것에 대해 생각하고 있었기 때문에 좌석을 클릭 할 때 왼쪽 및 오른쪽 자리가 예약되어 있는지 확인해야 나중에 사용할 수있었습니다. 여기 배열 인덱스가 도움이 될 것입니다. 그러나 나는이 단계에 도달하는 방법을 이해할 수 없다. (그림 참조)모든 셰이프를 배열에 어떻게 삽입합니까?
다음 시나리오를 따르십시오. 직사각형 (좌석을 나타냄)을 클릭합니다. 그것은 붉은 색으로 만 색이 변합니다. 그래서 좌석 [] []. checkNeighbourColor 또는 그와 비슷한 것. See picture
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();
}
}
'awt' 가져 오기를 수행하는 이유가 있습니까? – Sedrick
왜'GridPane'을 사용하지 않겠습니까? 이렇게하면 배열을 사용할 필요가 없습니다. – Sedrick
'JavaFX'를 사용하여 화면 크기를 얻는 방법 : http://java-buddy.blogspot.com/2013/11/get-screen-size-using-javafxstagescreen.html – Sedrick