Layout JavaFX:选择/聚焦时组件/节点会移动

Layout JavaFX:选择/聚焦时组件/节点会移动,layout,textbox,javafx,Layout,Textbox,Javafx,我正在创建一个非常简单的表单,我遇到了一个问题,控件/组件在选择时将位置(特别是文本框和复选框)移动了几个像素。这并没有破坏我的界面,但你可以想象这有点刺激。我觉得这是我创建的自定义节点的问题。。。虽然我不能确定问题出在哪里 我以前做过类似的事情,没有遇到任何问题,但自从我尝试“模块化”我的代码(创建了一个带有标签和texbox的自定义节点,而不是在主节点中分别声明它们)以来,我遇到了这一点(以及其他一些微妙的问题)。这是我的自定义节点。。。以防这让位于解决我的问题 public class N

我正在创建一个非常简单的表单,我遇到了一个问题,控件/组件在选择时将位置(特别是文本框和复选框)移动了几个像素。这并没有破坏我的界面,但你可以想象这有点刺激。我觉得这是我创建的自定义节点的问题。。。虽然我不能确定问题出在哪里

我以前做过类似的事情,没有遇到任何问题,但自从我尝试“模块化”我的代码(创建了一个带有标签和texbox的自定义节点,而不是在主节点中分别声明它们)以来,我遇到了这一点(以及其他一些微妙的问题)。这是我的自定义节点。。。以防这让位于解决我的问题

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中创建的标签和文本框完全相同

我希望至少有人能指导我的问题所在,而不必看我的其他源代码(可能是一个很长的机会…我希望不必在这里发布代码)


提前谢谢

这可能无法解决问题,但有助于:


您不应该自己设置任何可调整大小的对象的宽度/高度。父容器为您设置它们。如果您希望对象具有特定的大小,请改用LayoutInfo对象。

我最终让事情更符合我的喜好。我最终扩展了CustomNode和Resizeable(并实现了Resizeable所需的方法…请参见API)。我觉得这很有帮助->


需要注意的是:CustomNode不是可调整大小的。JFXtras添加一个名为XCustomNode的节点,该节点添加(缺少)可调整大小的功能。JFXtras库可以在code.google.com/p/JFXtras/downloads/list上找到(抱歉…现在只能发布1个链接)。如果您使用的是JavaFX1.3,请坚持使用0.7版本。0.6版本与JavaFX1.2配合使用。

你说得对。。。没有解决特定的问题,但我还是很感激!为了确保我们在同一页上。。。您指的是以下内容:“宽度:绑定宽度高度:绑定高度”??我试图删除这些行,但文本框的行为并不是我想要的(改变了我的想法…现在想要的行为是填充空间)。我把layoutInfo:layoutInfo{hgrow:Priority.NEVER}也改成了ALWAYS。我最终让事情更符合我的喜好。我最终扩展了CustomNode和Resizeable(并实现了Resizeable所需的方法…请参见API)。我发现这很有用->