JavaFX: компоненты / узлы сдвигаются при выборе / фокусировке - PullRequest
2 голосов
/ 26 июля 2010

Я создаю довольно простую форму и сталкиваюсь с проблемой сдвига положения элементов управления / компонентов (в частности, текстовых полей и флажков) на несколько пикселей при выделении.Это никоим образом не нарушает мой интерфейс, но вы можете себе представить, что это немного раздражает.У меня такое чувство, что это проблема с пользовательскими узлами, которые я создал ... хотя я не могу определить, где будет проблема.

Я делал что-то подобное раньше без каких-либо проблем, но с тех пор, как я попытался «модулировать» мой код (создал собственный узел с меткой и текстовым полем, в отличие от отдельного объявления каждого в основном), я сталкивался с этим (наряду с несколькими другими тонкими проблемами).Вот мой пользовательский узел ... на тот случай, если это поможет разобраться в моей проблеме.

public class NumberWithLabelNode extends CustomNode {

public var width: Number;
public var height: Number;
public var x: Number;
public var y: Number;
public var labelText: String = "Generic Label:  ";
public var text: String = "0.0";
public var columns: Integer = 5;
public var error: Boolean = false;
public var errorText: String = "  Invalid input.";

public override function create(): Node {
    return HBox {
                width: bind width
                height: bind height
                content: [
                    Text {
                                content: bind labelText
                            },
                    TextBox {
                        layoutInfo: LayoutInfo { hgrow: Priority.NEVER }
                        columns: bind columns
                        text: bind text with inverse
                    },
                    Text {
                        visible: bind error
                        fill: Color.RED
                        content: bind errorText;
                    }
                ]
            }
}

}

Если вы видите что-то, что я сделал неправильно / не соответствует стандартам, пожалуйста, дайте мне знать.Чтобы повторить, я хочу, чтобы этот пользовательский узел вел себя точно так же, как если бы я создал ярлык и текстовое поле в hbox.

Я надеюсь, что кто-то может, по крайней мере, направить меня туда, где может быть моя проблемабез необходимости смотреть на остальную часть моего источника (может быть, длинный выстрел ... я надеюсь, что не придется урезать код, чтобы разместить здесь).

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 29 июля 2010

Я закончил тем, что все работало по своему вкусу.В итоге я расширил и CustomNode и Resizable (и реализовал необходимые методы для Resizable ... см. API).Я нашел это полезным -> http://blog.cedarsoft.com/2010/05/javafx-template-for-resizable-customnode/.

Что стоит отметить: CustomNode не является изменяемым размером.JFXtras добавляет узел с именем XCustomNode, который добавляет (отсутствует) возможность изменения размера.Библиотеки JFXtras можно найти по адресу code.google.com/p/jfxtras/downloads/list (извините ... сейчас можно опубликовать только 1 ссылку).Придерживайтесь сборки 0.7, если вы используете JavaFX 1.3.Версии 0.6 работают с JavaFX 1.2.

1 голос
/ 26 июля 2010

Это может не решить проблему, но поможет:

Вы не должны устанавливать ширину / высоту любого изменяемого размера самостоятельно.Родительский контейнер устанавливает их для вас.Если вы хотите, чтобы объект имел определенный размер, используйте объект LayoutInfo.

...