javafx是否支持MDI(多文档接口)?

javafx是否支持MDI(多文档接口)?,javafx,javafx-2,javafx-8,Javafx,Javafx 2,Javafx 8,我正在设计程序,我需要使用MDI(多文档接口),我不知道如何做,所以请任何人回答我。 YouTube上有使用javafx进行MDI的视频,但没有视频链接的源代码或视频解释:。 请帮我解决这个问题,javafx不允许我们在其他窗口中管理窗口,这让我感到羞耻 MDI在很大程度上被认为是一个应用程序,部分原因是,当前版本的JavaFX中没有内置的MDI API 然而,如果您真的想实现这样一个应用程序,这不会太困难。使用普通的窗格保存各个窗口,并使用边框窗格s实现窗口,顶部区域保存一个标题栏和一些按钮。

我正在设计程序,我需要使用MDI(多文档接口),我不知道如何做,所以请任何人回答我。 YouTube上有使用javafx进行MDI的视频,但没有视频链接的源代码或视频解释:。
请帮我解决这个问题,javafx不允许我们在其他窗口中管理窗口,这让我感到羞耻

MDI在很大程度上被认为是一个应用程序,部分原因是,当前版本的JavaFX中没有内置的MDI API


然而,如果您真的想实现这样一个应用程序,这不会太困难。使用普通的
窗格
保存各个窗口,并使用
边框窗格
s实现窗口,顶部区域保存一个标题栏和一些按钮。您需要做一些工作来实现用于拖动和聚焦的鼠标侦听器,但不要做太多

我找到了一种实现MDI应用程序的方法,只需使用jfxtra库

我在10分钟内制作了一个MDI接口,核心使用JavaFX,内部框架使用Swing。如果你想走这条路,你必须处理:

  • JInternalFrame,以及

SIB Visions的JVx似乎在一些MDI支持JavaFX方面起作用:

也就是说,请注意,我目前正在开发一种MDI方法,您可能会感兴趣,将其作为MDI方法的替代方法

注释目前仅在应用程序内部可用,但编程方法也可用于非OSGi环境(请参阅)


请注意,有一个页面用于基于Drombler FX的应用程序,支持对接框架注释。

使用JavaFX实现这一点并不难,但我同意,它不是本机的,这太糟糕了。虽然我对这个想法不感兴趣,但它有一些用例

主窗口是否使用窗格作为窗口打开的位置。然后您可以使用一个CustomPane,其中包含一个滚动窗格。然后可以将FXML加载到此对象中

public class MoveablePane extends Pane {
    private ScrollPane scrollArea;
    private Node  contentNode;
    public MoveablePane (String title, Node contentNode) {

    this.contentNode = contentNode;

    //Set up the title bar
    //Set up the window buttons
    //Place the node into the scroll area so the user can resize
    this.scrollArea = new ScrollPane(contentNode);
    //Add the nodes to be layed out on the stage
    this.getChildren().clear();
    this.getChildren().addAll(scrollArea);
}

然后您需要实现拖动和调整事件大小以及布局子项

例如:

private void dragPaneToNewLocation(MouseEvent event) {

    // Get the exact moved X and Y
    double offsetX = event.getSceneX() - mousex;
    double offsetY = event.getSceneY() - mousey;

    x += offsetX;
    y += offsetY;

    double scaledX = x;
    double scaledY = y;

    if(scaledY > 0){
        setLayoutY(scaledY);
    }

    if(scaledX > 0){
        setLayoutX(scaledX);
    }


    // again set current Mouse x AND y position
    mousex = event.getSceneX();
    mousey = event.getSceneY();
}

在JavaFX2中,或者据我所知,FX8.+1中没有对子窗口进行抽象,以表示“请不要”。-)我可以建议使用自由浮动窗口或更好的单窗口、全尺寸选项卡式窗格。您是如何管理的?@Troyseph我没有尝试过(它在待办事项列表中),但我认为Hassan指的是jfxtras.scene.control.window.window类。请参阅“窗口控件。窗口控件是Swing中的窗口节点。它可用于实现基于MDI的应用程序。有关示例代码,请参阅。”