Есть TabPane, в нем создаются Tab, в Tab помещается TextArea. Есть Button, который что-то должен делать с открытым TextArea в Tab. Как мне получить этот TextArea?
Думал отслеживать нажатие на элемент (не понял), или когда в фокусе становится элемент(пробовал, получалось отловить все кроме TextArea и TextField(это я к примеру)).
Привожу код метода создания Табов (Хотя вряд ли он нужен).
@Override
public boolean addTabOnView(TabPane tabPane, File file) {
Tab tab = new Tab(file.getName());
AnchorPane anchorPane = new AnchorPane();
TextArea textArea = null;
try {
textArea = new TextArea(readFile(file));
} catch (IOException e) {
e.printStackTrace();
return false;
}
AnchorPane.setBottomAnchor(textArea, 0.0);
AnchorPane.setTopAnchor(textArea, 0.0);
AnchorPane.setLeftAnchor(textArea, 0.0);
AnchorPane.setRightAnchor(textArea, 0.0);
anchorPane.getChildren().add(textArea);
tab.setContent(anchorPane);
tabPane.getTabs().add(tab);
return true;
}
ArrayList<String> stringArrayList = new ArrayList<String>();
String readFile(File file) throws IOException {
Files.lines(file.toPath(), StandardCharsets.UTF_8).forEach(a -> stringArrayList.add(a));
String string = "";
for (String str:stringArrayList) {
string += str;
string += "\n";
}
return string;
}
При условии, что наполнение таба контентом в методе addTabOnView не изменится, то:
Tab tab = tabPane.getTabs().filtered( Tab::isSelected ).get( 0 );
//или
Tab tab = tabPane.getTabs().stream().filter( Tab::isSelected ).findFirst().get();
TextArea area = (TextArea)((Parent)tab.getContent()).getChildrenUnmodifiable().get( 0 );
Пусть addTabOnView(TabPane tabPane, File file) возвращает значение созданного textArea = new TextArea(readFile(file)); и всего делов.
Либо просто из таба забирать как то так:
tab.getContent().getChildren().get(0);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости