2015-03-15 2 views
0

Я использую JavaFX, и я пытаюсь поместить узел в центр панели, выполнив математику специально.Java/JavaFX: принимать любые типы и возвращать

Я создал такую ​​функцию:

int toCenterX(Label label){ 
    return (int) ((width-label.getWidth())/2); 
} 

«ширина» переменная я уже объявлена.

Тогда центрирования его следующим образом:

sampleLabel.setLayoutX(toCenterX(sampleLabel)); 

Эта функция работает нормально, но я хочу, что функция принимает не только этикетки, но и другие классы JavaFX.

Как взять любые типы класса (узла) и использовать специальные методы, которые имеет этот класс?

+0

Поскольку вы выборки ширину, которая наследуется от региона. Вы можете использовать 'int toCenterX (Region region)'. Я лично хотел бы, чтобы вы использовали 'int toCenterX (Control control)'. – ItachiUchiha

+0

Спасибо вам большое! – Rin

+0

Я скорее предлагаю вам использовать Node вместо Control и вернуть double с помощью getBoundsInLocal(), getBoundsInParent или getLayoutBounds() в зависимости от ваших требований. – Roland

ответ

0

Вы можете использовать Control вместо Label. Как Label наследует от Control вы можете использовать эту функцию, точно так, как ваш старый:

int toCenterX(Control control){ 
    return (int) ((width - control.getWidth())/2); 
} 
+0

Простой и легкий. Спасибо, сэр ! – Rin

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