javafx是否支持MDI(多文档接口)?
我正在设计程序,我需要使用MDI(多文档接口),我不知道如何做,所以请任何人回答我。 YouTube上有使用javafx进行MDI的视频,但没有视频链接的源代码或视频解释:。javafx是否支持MDI(多文档接口)?,javafx,javafx-2,javafx-8,Javafx,Javafx 2,Javafx 8,我正在设计程序,我需要使用MDI(多文档接口),我不知道如何做,所以请任何人回答我。 YouTube上有使用javafx进行MDI的视频,但没有视频链接的源代码或视频解释:。 请帮我解决这个问题,javafx不允许我们在其他窗口中管理窗口,这让我感到羞耻 MDI在很大程度上被认为是一个应用程序,部分原因是,当前版本的JavaFX中没有内置的MDI API 然而,如果您真的想实现这样一个应用程序,这不会太困难。使用普通的窗格保存各个窗口,并使用边框窗格s实现窗口,顶部区域保存一个标题栏和一些按钮。
请帮我解决这个问题,javafx不允许我们在其他窗口中管理窗口,这让我感到羞耻 MDI在很大程度上被认为是一个应用程序,部分原因是,当前版本的JavaFX中没有内置的MDI API
然而,如果您真的想实现这样一个应用程序,这不会太困难。使用普通的
窗格
保存各个窗口,并使用边框窗格
s实现窗口,顶部区域保存一个标题栏和一些按钮。您需要做一些工作来实现用于拖动和聚焦的鼠标侦听器,但不要做太多 我找到了一种实现MDI应用程序的方法,只需使用jfxtra库我在10分钟内制作了一个MDI接口,核心使用JavaFX,内部框架使用Swing。如果你想走这条路,你必须处理:
- JInternalFrame,以及
请注意,有一个页面用于基于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的应用程序。有关示例代码,请参阅。”