Java 如何获取滚动窗格对象的内容
我正在用JavaFX制作一个文本编辑器 我的程序有一个选项卡窗格,其中包含选项卡,每个选项卡在滚动窗格中都有一个文本区域 我需要能够获取TextArea的文本内容,以便将其保存到.txt文件中,但是我遇到了问题 以下是用于检索当前所选选项卡的TextArea中包含的文本的代码位:Java 如何获取滚动窗格对象的内容,java,Java,我正在用JavaFX制作一个文本编辑器 我的程序有一个选项卡窗格,其中包含选项卡,每个选项卡在滚动窗格中都有一个文本区域 我需要能够获取TextArea的文本内容,以便将其保存到.txt文件中,但是我遇到了问题 以下是用于检索当前所选选项卡的TextArea中包含的文本的代码位: tabPane.getSelectionModel().getSelectedItem().getContent().getContent().getText(); getSelectionModel().getSe
tabPane.getSelectionModel().getSelectedItem().getContent().getContent().getText();
getSelectionModel().getSelectedItem()获取当前选定的选项卡,然后.getContent()获取滚动窗格
next.getContent()应该返回滚动窗格中包含的TextArea。但是,NetBeans告诉我ScrollPane getContent()方法不存在
但是,Oracle的JavaFX文档()告诉我getContent()方法存在,应该返回ScrollPane包含的节点
有人知道我应该如何将节点包含在所选选项卡的滚动窗格中吗
谢谢 如果要访问节点上特定于类型的方法,则需要将getContent()调用的结果强制转换为相应的节点类型;例如:
((TextArea)
((ScrollPane)
tabPane
.getSelectionModel()
.getSelectedItem()
.getContent()
).getContent()
).getText();
一些建议:
import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
public class ScrollableTabs extends Application {
@Override public void start(Stage stage) {
final TabPane tabPane = new TabPane();
tabPane.setTabClosingPolicy(TabPane.TabClosingPolicy.UNAVAILABLE);
tabPane.getTabs().setAll(
makeTab("doe", "A deer, a female deer."),
makeTab("ray", "A flash a golden light."),
makeTab("me", "A name a call myself.")
);
Label selectedLabel = new Label();
selectedLabel.textProperty().bind(
Bindings.select(
tabPane,
"selectionModel",
"selectedItem",
"content",
"text"
)
);
// listener alternative to binding.
// tabPane
// .getSelectionModel()
// .selectedItemProperty()
// .addListener((observable, oldTab, newTab) -> {
// TextArea selectedArea = (TextArea) newTab.getContent();
//
// selectedLabel.setText(
// selectedArea.getText()
// );
// });
tabPane.getSelectionModel().select(1);
VBox.setVgrow(tabPane, Priority.ALWAYS);
stage.setScene(
new Scene(
new VBox(10,
selectedLabel,
tabPane
)
)
);
stage.show();
}
private Tab makeTab(String title, String text) {
Tab tab = new Tab(title);
tab.setContent(
new TextArea(text)
);
return tab;
}
public static void main(String[] args) { launch(args); }
}
请注意,我的代码中没有滚动窗格,但文本区域仍然会适当地显示滚动条