在我的JavaFX应用程序的各个部分中,我列出了用户将创建的条目,但为了避免出现可怕的空体验,我希望在用户创建第一个条目之前显示完全不同的内容。
例如,当您转到网站标签时,首先会看到:
在您添加第一个网站后,它将被替换为类似的内容(因为我正在构建应用程序时仍然缺少网站):
这应该如何建模?两个独立的FXML最终是我切换的两个不同场景?
关于使用堆栈窗格,它并不真正起作用,因为控件是透明的,堆栈窗格用于应用效果:
答案 0 :(得分:1)
使用堆栈窗格。在堆栈窗格中,为上面的每个上下文添加两个容器(例如VBox)。请记住使用ID
创建它们<StackPane fx:id="content">
<VBox fx:id="context_1">
<!-- the main view -->
</Vbox>
<VBox fx:id="context_2">
<!-- view when there is no content -->
</VBox>
</StackPane>
现在在您的控制器中,有三个
@FXML private StackPane content;
@FXML private VBox context_1;
@FXML private VBox context_2;
现在有一个类似
的方法@FXML private void userHasAddedContent(){
context_2.toFront();
}
现在在fxml中,将onMouseClick设置为“添加新站点”按钮,或者您可以将上述方法放在按钮调用的方法中。
答案 1 :(得分:0)
你非常重要。
如果您希望显示完全不同的内容,而不是建议使用占位符值为James_D的内容,那么您必须使用不同的named_foo = named_decorator(foo)
named_foo(2) #error
named_foo(x=2) #works
和不同的Declare @tvTable Table (
id int IDENTITY(1,1)
,someThing varchar(100)
,otherThing varchar(100)
,thisThing varchar(100)
);
Insert @tvTable
Values ('stuff', 'blah', 'foo')
,('thing', 'data', 'bob');
declare @someVar nvarchar(max)
;with cte as(
Select [Tag] = 1
,[PARENT] = NULL
,[things!1!thingId] = NULL
,[thing!2!thingId!element] = NULL
,[thing!2!thingOne!element] = NULL
,[thing!2!thingTwo!cdata] = NULL
,[thing!2!thingThree!cdata] = NULL
UNION ALL
Select 2
,1
,1
,thingId = id
,thingOne = someThing
,thingTwo = otherThing
,thingThree = thisThing
From @tvTable)
select @someVar = (select * from cte FOR XML EXPLICIT)
select @someVar
(不需要但是改变了FXML
。