Jak dostać się do JTextPane z konkretnej zakładki JTabbedPane

0

Witam i o zdrowię pytam :) Dawno mnie nie było ;p

Teraz szukam pół dnia i rozwiązać problemu nie mogę.

Mam sobie JTabbedPane i dodaje do niego zakładki składające się z JPanel w którym mam JTextPane.

Piszę sobię coś w JTextPane i chce to zapisać, a mam otwartych 15 zakładek. Chcę zapisać zawartość 9 zakładki. Jak dostać się do JTextPane z tej zakładki ?? Mogę określić, o którą mi konkretnie chodzi zakładkę poprzez JTabbedPane.getSelectedTab i dostanę int'a. Ale nie wiem czy to coś mi da, bo nie wiem jak w ogóle dostać się do pola tekstowego, żeby go zapisać. Mogę zapisać dane tylko z pierwszej zakładki, która jest po uruchomieniu programu.

Wiem wiem, macie ze mną :D Ale uwzględnie waz we wspominankach :)

0

http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/JTabbedPane.html
getSelectedComponent() - aktualnie wyświetlany komponent
getComponentAt(int index) - komponent nr index

Zwracany jest Component, bo taka klasa (i dziedzicząca po niej) jest akceptowana. Możesz zrzucić ją, jeśli jesteś pewien co do właściwego typu:

JTextPane selected=(JTextPane)tabs.getSelectedComponent();

Ale musisz być pewien, że nie dostanie się tam żaden inny typ. Możesz zabezpieczyć:

if(tabs.getSelectedComponent() instanceof JTextPane){
  JTextPane selected=(JTextPane)tabs.getSelectedComponent();
}
else return;
0

Zrobiłem tak jak radziłeś i nie zadziałało, więc wziąłem sobie to wypisałem i się okazało że mam JScroolPane. jak się dostać do JTextPane teraz ??

0

Utwórz HashMap<JScrollPane,JTextPane> i przechowuj w niej powiązania.

HashMap<JScrollPane,JTextPane> mapa=HashMap<JScrollPane,JTextPane>();
//po utworzeniu kolejnej zakładki
JTextPane tp=new JTextPane();
JScrollPane sp=new JScrollPane(tp);
//dopisz do mapy
mapa.put(sp,tp)
//a potem
panel_tekstowy=mapa.get(zidentyfikowany_scroll_panel);
0

Już znalazłem rozwiązanie ale dzięki za odpowiedź :)

JScrollPane jscroolpane = (JScrollPane) zakladki.getSelectedComponent();
JViewport jviewport = (JViewport) jscroolpane.getComponent(0);
JTextPane jtextpane = (JTextPane) jviewport.getComponent(0);

1 użytkowników online, w tym zalogowanych: 0, gości: 1