Проблема макета Javafx с VBox и HBoxes

Когда я запускаю следующее, я заметил расстояние между узлами; Мои исследования показали, что - 1) Если я не добавляю текст в win1 через setwininfo, то проблем нет. 2) Когда я включаю этот код в более крупное приложение, и когда щелчок кнопки появляется откуда-то еще, загадочным образом корректируется интервал. 3) Я попытался привязать узлы win1 и win2 к содержимому сцены, но безуспешно.

def mainframew : Целое число = 250; def mainframeh : Целое число = 500;

класс CtrlWindow расширяет CustomNode {

var wininfo : String;
var fsize : Integer;
var width : Integer;

public function setWinInfo(info : String) {
    wininfo = info;
}

override protected function create () : Node {
    var win = Group {
                                    content: [
                                         VBox {
                                                content: [
                                                    Text {
                                                            font : Font {
                                                                    size: fsize
                                                            }

                                                            content : bind wininfo

                                                            textAlignment : TextAlignment.CENTER  // did not work
                                                    }
                                                ]
                                        }

                                        Rectangle {
                                                width: width, height: 25
                                                fill: Color.TRANSPARENT
                                                strokeWidth : 2
                                                stroke : Color.SILVER
                                        }

                                    ]
                            }

    return win;
}

}

запуск публичной функции (аргументы: строка []) {

var win1 = CtrlWindow{fsize:14, width:mainframew}; var win2 = CtrlWindow{fsize:14, width:mainframew};

win1.setWinInfo("Расстояние между этими узлами"); win2.setWinInfo("исправляет себя после получения события");

Стадия {

title : "MyApp"
scene: Scene {
    width: mainframew
    height: mainframeh
    content: [
                        VBox {
                               spacing: 0
                               content: [
                                            HBox {
                                                    content: win1
                                            }

                                            HBox {
                                                    content: win2
                                            }
                                ]
                        }
            ]
}
}

person user353496    schedule 29.05.2010    source источник
comment
Попробуйте отформатировать свой код: отступ только с 4 пробелами. В настоящее время это совершенно нечитаемо.   -  person Darin Dimitrov    schedule 29.05.2010


Ответы (1)


Если вы используете JavaFX 1.3, проблема может быть связана с предпочтительными размерами CtrlWindow. Вы можете использовать layoutInfo для установки общего предпочтительного размера, в противном случае предпочтительный размер будет меняться в зависимости от содержимого двух узлов CtrlWindow.

Что-то типа:

win1 = CtrlWindow{
        fsize:14
        layoutInfo : LayoutInfo { width: mainframew, minHeight: 50 }
   }

Когда вы просто устанавливаете ширину (без привязки), она будет сброшена до предпочтительного размера в макете HBox.

person JimClarke    schedule 02.06.2010