我正在設計程序,我需要使用MDI(多文檔界面),我不知道如何做,所以請任何人都可以回答我。 YouTube上的視頻正在做javafx中的MDI,但沒有視頻鏈接的視頻源代碼或解釋:https://www.youtube.com/watch?v=0nskbRY-Tnw。 請幫助我,這是可惜的javafx不允許我們管理其他窗口內的窗口。javafx支持MDI(多文檔界面)嗎?
回答
MDI在很大程度上被認爲是poor user experience,部分原因是在當前版本的JavaFX中沒有內置的MDI API。
但是,如果你真的想實現這樣的應用程序,它不會太困難。使用普通的Pane
來保存各個窗口,並使用BorderPane
s來實現窗口,頂部區域保持標題欄和一些按鈕。你需要做一些工作來實現鼠標監聽器的拖動和聚焦,但不是太多。
+1表示「請勿」。:-)我可以建議使用自由浮動窗口或可能更好,單個窗口,全尺寸選項卡窗格。 – haraldK
我在10分鐘內做出了MDI接口,使用JavaFX的核心和Swing的內部框架。如果你想要走這條路,你必須處理:
- 的JInternalFrame SO Q&A,tutorial和JavaDoc
- JavaFX-Swing Interoperability
JVX通過SIB願景似乎對JavaFX的一些MDI支持工作:http://blog.sibvisions.com/2015/03/19/javafx-styled-stage-and-mdi-system/
不過,請注意,我目前工作的一個Docking Framework for JavaFX,這可能會感興趣你作爲一個替代的辦法MDI。
註釋目前僅在Drombler FX應用程序中可用,但程序化方法也適用於非OSGi環境(請參閱sample)。
請注意,有一個Getting Started頁基於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();
}
- 1. 多文檔界面(MDI)幫助
- 2. Clojure的多語言文檔支持
- 3. 如何在FXML文檔中實現對JavaFX的語言支持?
- 4. websocket支持javaFx webView
- 5. Visual Studio是一個多文檔還是單文檔界面?
- 6. GitHub頁面支持PHP嗎?
- 7. 除了DirectShow之外,.NET還支持WebCam界面嗎?
- 8. 支持Python界面的鏈接速度
- 9. Racket支持多線程嗎?
- 10. Winforms MDI「桌面」區域邊界
- 11. 自定義的Android用戶界面和多屏幕支持
- 12. 如何爲Web應用程序支持多個用戶界面
- 13. 可以Sharepoint文檔庫支持文件夾版本控制嗎?
- 14. JavaFX FXML是否支持XInclude?
- 15. JavaFX是否支持RTSP流?
- 16. 支持HTTPS的JavaFX MediaPlayer
- 17. 支持多種界面方向,但保持鎖定在肖像模式
- 18. Google文檔通過驅動器支持.zip格式嗎?
- 19. 是否支持Google文檔列表API支持OAuth 2
- 20. Internet Explorer和Firefox支持@media頁面嗎?
- 21. AVRCP 1.3支持專輯封面嗎?
- 22. Windows 8桌面支持C++/cli嗎?
- 23. 獲取支持的文檔類型
- 24. market://不支持,儘管有Android文檔
- 25. 「的OnEventName」在文檔瀏覽器支持
- 26. D是否支持文檔生成?
- 27. socket.io二進制支持文檔
- 28. 支持HSQLDB的文檔數據類型
- 29. Crate.io是否支持嵌套文檔
- 30. IBM Doors是否支持設計文檔?
有沒有抽象的子窗口烘焙到Java FX2或據我所知,FX8。 – scottb