- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
tab.setOnCloseRequest(e -> {
if (getEditorForTextArea(getSelectedTextArea()) != null){
selectedTextArea = getSelectedTextArea();
selectedEditor = getEditorForTextArea(selectedTextArea);
if (selectedEditor.isModified()){
if (DialogBox.newSaveConfirmationBox(tab.getText()))
saveFile();
else e.consume();
}
}
}
);
这是我的代码。我想在 selectedEditor.isModified()
时弹出一个 saveConfirmationBox
。然后出现了问题。我打开了两个选项卡,一个已修改,另一个未修改。当我选择未修改的选项卡时,我可以使用 X 按钮关闭已修改的选项卡,而无需任何确认。另一方面,当我在已修改的选项卡上尝试关闭未修改的选项卡时,会出现确认框。
这是我如何获取selectedEditor
:
private Editor getEditorForTextArea(TextArea textArea) {
Iterator<Editor> editorIterator = editorVector.iterator();
while (editorIterator.hasNext()) {
Editor editor = editorIterator.next();
if (textArea == editor.getRoot())
return editor;
}
return null;
}
@Nullable
private TextArea getSelectedTextArea() {
SingleSelectionModel<Tab> selectionModel = tabPane.getSelectionModel();
if (selectionModel.isEmpty()) return null;
Tab selectedTab = selectionModel.getSelectedItem();
return (TextArea)selectedTab.getContent();
}
提前感谢您的帮助:)
最佳答案
我认为这完全是预期的行为,因为您在 getSelectedTextArea()
方法中获取了当前选定的选项卡的TextArea
。因此它会检查当前 selecetd 选项卡的 Editor
,而不是您尝试关闭的选项卡。
您应该将 setOnCloseRequest
修改为:
tab.setOnCloseRequest(e -> {
if (getEditorForTextArea(getTextAreaFor(tab)) != null){
textArea = getTextAreaFor(tab);
editor = getEditorForTextArea(textArea);
if (editor.isModified()){
if (DialogBox.newSaveConfirmationBox(tab.getText()))
saveFile();
else e.consume();
}
}
}
);
方法getTextAreaFor(tab)
将是
private TextArea getTextAreaFor(Tab tab) {
return (TextArea)tab.getContent(); // with checks etc...
}
关于JAVAFX tab onCloseRequest 消耗 tabPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42876388/
我正在为 JavaFX 应用程序编写一个应用程序内网络浏览器,该应用程序与所有浏览器一样具有选项卡。整个应用程序的结构基于 TabPane,其中显示了应用程序的所有功能。当用户选择使用浏览器时,将创建
我正在为 JavaFX 应用程序编写一个应用程序内网络浏览器,该应用程序与所有浏览器一样具有选项卡。整个应用程序的结构基于 TabPane,其中显示了应用程序的所有功能。当用户选择使用浏览器时,将创建
在我的程序的 GUI 中,我有一行: window.setOnCloseRequest(closeProgram()); 只要用户按下窗口框架上的 X 按钮(不是我制作的按钮,而是每个 GUI 应用程
tab.setOnCloseRequest(e -> { if (getEditorForTextArea(getSelectedTextArea()) != null
请参阅下面的 JavaFX SSCCE。当从窗口的默认标题栏“X”按钮关闭主阶段时,会出现打印语句。单击“关闭”按钮时不会出现打印语句。当我在舞台上调用 close() 时,为什么我的 onClose
我是一名优秀的程序员,十分优秀!