2016-04-10 2 views
0

Прежде всего я хотел бы сказать, что я не буду включать какой-либо из моего кода, поскольку соответствующий код широко распространен во многих функциях и файлах. Я только прошу узнать, не сделал ли я что-то вопиюще неправильно, иначе я не буду утомлять вас бесконечными строками кода.Javafx GridPane дочернее выравнивание

Я пытаюсь написать игру, используя Java и JavaFX. Я создал несколько объектов GridPane, содержащих разную графику (теперь все заполнители), все сложенные на StackPane. Один GridPane содержит теневые объекты, которые представляют собой черные квадраты с низкой непрозрачностью, лежащие над реальной средой. Функция определяет, должен ли квадрат быть заштрихован или нет, а затем добавляет экземпляр черного квадрата в это место GridPane.

Хотя все работает нормально, как вы можете видеть на следующих изображениях, GridPane разбивается на области. Кажется, что каждые 25 квадратов по вертикали или по горизонтали, GridPane добавляет пустую строку пикселя, компенсируя все остальное в сторону, ниже или и то, и другое.

Я проверил, что все paddings равны 0, и поскольку теневые изображения добавляются целыми значениями, я не могу понять, почему это происходит. Есть идеи?

(В очень короткий фрагмент кода, эта функция добавляет теневые квадраты)

shadowGrid.getChildren().clear(); 
for (int j=0;j<MAPYSIZE;j++){ 
    for (int i=0;i<MAPXSIZE;i++){ 
     if (isShaded(i,j)){ 
      ImageView shadow=new ImageView(shadowBlock); 
      shadow.setOpacity(0.5); 
      shadowGrid.add(shadow,i,j); 
     } 
    } 
} 

shadow error1

shadow error2,

+0

Не имеет отношения к проблеме, но если вы используете один и тот же файл изображения для разных 'ImageView', вы должны загрузить данные на один экземпляр «Image» и использовать его в качестве данных для 'ImageView'. (Однако в этом случае 'Rectangle's тоже хватит.) – fabian

+0

Хороший улов, спасибо! – Sotos

+0

Кажется, что сетка тени срезается, если она окутывает определенный процент экрана. Я все еще не понимаю, почему это происходит. Любая помощь, кто-нибудь? – Sotos

ответ

0

Это может быть давно, но я нашел решение (потому что у меня была та же проблема).

А именно, вам нужно позвонить:

GridPane.setHalignment(objectYouWantToCenter, HPos.CENTER); 

Перед тем, как добавить его в свой shadowGrid. Обратите внимание, что это не вызывается на shadowGrid, а на объекте GridPane.

 Смежные вопросы

  • Нет связанных вопросов^_^