Javafx 2 水平JavaFX标题窗格
我想知道JavaFX是否包含一种使手风琴或标题窗格水平的方法。我什么也找不到,但我想我应该问问。基本上,最终目标是拥有一个侧栏,可以展开以显示树视图。以下是我的意向图:Javafx 2 水平JavaFX标题窗格,javafx-2,javafx,Javafx 2,Javafx,我想知道JavaFX是否包含一种使手风琴或标题窗格水平的方法。我什么也找不到,但我想我应该问问。基本上,最终目标是拥有一个侧栏,可以展开以显示树视图。以下是我的意向图: 也许JavaFx不提供水平标题窗格,但您可以将标题窗格旋转90度,并将要在其内容中设置的节点旋转270度,就完成了 这是一个代码示例 TitledPane titledPane = new TitledPane(); BorderPane borderPane = new BorderPane(); borderPane.s
也许JavaFx不提供水平标题窗格,但您可以将标题窗格旋转90度,并将要在其内容中设置的节点旋转270度,就完成了 这是一个代码示例
TitledPane titledPane = new TitledPane();
BorderPane borderPane = new BorderPane();
borderPane.setCenter(new Label("My Label")); //Or your tree view
borderPane.setRotate(270);
titledPane .setContent(borderPane);
JavaFX2.2中没有标准的水平方向标题窗格 您可以在中为其中一个创建功能请求 实现自己的水平标题窗格非常简单 下面是一个在标准窗格上使用的动画 Sai的博客文章中有对所涉及技术的进一步解释:
/**为左侧屏幕上和屏幕下的节点设置动画*/
类边栏扩展了VBox{
/**@返回控制按钮以隐藏和显示侧边栏*/
公共按钮getControlButton(){return controlButton;}
专用最终按钮控制按钮;
/**创建包含给定节点垂直对齐的侧栏*/
侧栏(最终双扩展宽度,节点…节点){
getStyleClass().add(“侧栏”);
此.setPrefWidth(expandedWidth);
//创建要隐藏和显示的栏。
设置对齐(位置中心);
getChildren().addAll(节点);
//创建一个按钮来隐藏和显示侧边栏。
controlButton=新按钮(“折叠”);
controlButton.getStyleClass().add(“隐藏左侧”);
//按下按钮时应用动画。
controlButton.setOnAction(新的EventHandler(){
@重写公共无效句柄(ActionEvent ActionEvent){
//创建动画以隐藏侧栏。
最终动画hideSidebar=新过渡(){
{setCycleDuration(Duration.millis(250));}
受保护的孔隙插值(双重压裂){
最终双倍宽度=扩展宽度*(1.0-分形);
setPrefWidth(curWidth);
setTranslateX(-expandedWidth+curWidth);
}
};
hideSidebar.onFinishedProperty().set(新的EventHandler()){
@重写公共无效句柄(ActionEvent ActionEvent){
setVisible(假);
controlButton.setText(“显示”);
controlButton.getStyleClass().remove(“隐藏左侧”);
controlButton.getStyleClass().add(“显示右侧”);
}
});
//创建动画以显示侧栏。
最终动画showSidebar=新过渡(){
{setCycleDuration(Duration.millis(250));}
受保护的孔隙插值(双重压裂){
最终双倍宽度=扩展宽度*分形;
setPrefWidth(curWidth);
setTranslateX(-expandedWidth+curWidth);
}
};
showSidebar.onFinishedProperty().set(新的EventHandler()){
@重写公共无效句柄(ActionEvent ActionEvent){
controlButton.setText(“折叠”);
controlButton.getStyleClass().add(“隐藏左侧”);
controlButton.getStyleClass().remove(“显示右侧”);
}
});
if(showSidebar.statusProperty().get()==Animation.Status.STOPPED&&hideSidebar.statusProperty().get()==Animation.Status.STOPPED){
if(isVisible()){
hideSidebar.play();
}否则{
setVisible(真);
showSidebar.play();
}
}
}
});
}
}
只需在accordion中添加以下行,即可完成操作
accordion.setRotate(270);
好了:
@Override
public void start(Stage stage) throws Exception {
Label label1 = new Label("label 1");
label1.setRotate(90);
TitledPane pane1 = new TitledPane("titled pane 1", label1);
pane1.setAlignment(Pos.CENTER);
Label label2 = new Label("label 2");
label2.setRotate(90);
TitledPane pane2 = new TitledPane("titled pane 2", label2);
pane2.setAlignment(Pos.CENTER);
Accordion accordion = new Accordion();
accordion.setRotate(270);
accordion.getPanes().add(pane1);
accordion.getPanes().add(pane2);
HBox mainPane = new HBox(accordion);
accordion.prefWidthProperty().bind(mainPane.heightProperty());
accordion.prefHeightProperty().bind(mainPane.widthProperty());
stage.setTitle("Horizontal Accordion");
stage.setScene(new Scene(mainPane, 800, 600));
stage.show();
}
我这样做是为了生成我的示例,但在调整大小时会出现问题。我想您可以将窗格的高度/宽度绑定到父窗格的宽度/高度?谢谢,这些资源将非常有用。
@Override
public void start(Stage stage) throws Exception {
Label label1 = new Label("label 1");
label1.setRotate(90);
TitledPane pane1 = new TitledPane("titled pane 1", label1);
pane1.setAlignment(Pos.CENTER);
Label label2 = new Label("label 2");
label2.setRotate(90);
TitledPane pane2 = new TitledPane("titled pane 2", label2);
pane2.setAlignment(Pos.CENTER);
Accordion accordion = new Accordion();
accordion.setRotate(270);
accordion.getPanes().add(pane1);
accordion.getPanes().add(pane2);
HBox mainPane = new HBox(accordion);
accordion.prefWidthProperty().bind(mainPane.heightProperty());
accordion.prefHeightProperty().bind(mainPane.widthProperty());
stage.setTitle("Horizontal Accordion");
stage.setScene(new Scene(mainPane, 800, 600));
stage.show();
}