Witam Wszystkich,
Na załączonym kodzie przedstawiam fragment klasy odpowiedzialny za tworzenie wewnętrznych ramek w okienku głównym aplikacji. Metodą "New" tworzone są kolejne "JInternalFrame", które zawierają tylko 1 komponent "JTextArea" - całość dodawana jest do kontenera "JDesktopPane".
Mój problem polega na tym, że nie potrafię dostać się z poziomu innej metody (np. "ChangeFont") do "JTextArea" danego "JInternalFrame"...
Obiekt "com" w metodzie "ChangeFont" zawiera co prawda jakieś komponenty, ale z pewnością nie "JTextArea"...
Czy ktoś wie co robię źle?
Bardzo dziękuje i pozdrawiam,
Piotr.
public void ChangeFont(String font, int size)
{
this.FontName = font;
this.FontSize = size;
for(JInternalFrame frame: Desktop.getAllFrames())
{
for(Component com: frame.getComponents())
{
//System.out.println(frame.getComponentCount());
if(com instanceof JTextArea)
{
((JTextArea) com).setFont(new Font(this.FontName, 0, this.FontSize));
}
}
}
}
/**
Metoda tworzaca nową ramkę wewnętrzną
*/
public void New()
{
// Utworzenie nowej ramki wewnęrznej zraz z jej komponentami
JInternalFrame frame = new JInternalFrame(StringNewInternalFrame, true, true, true, true);
JTextArea text = new JTextArea();
// Konfiguracja parametrów ramki wewnętrznej
frame.setBounds(this.LocationX, this.LocationY, (SizeX - 200), (SizeY - 200));
frame.setMinimumSize(new Dimension((SizeX - 300), (SizeY - 300)));
frame.setVisible(true);
frame.setName("Frame" + this.Index);
// Konfiguracja parametrów komponentów ramki wewnętrznej
text.setFont(new Font(this.FontName, 0, this.FontSize));
text.setMargin(new Insets(5, 5, 5, 5));
text.setName("Text" + this.Index);
text.setText("Text" + this.Index);
this.Index++;
// Dodanie komponentów do kontrolki "JInternalFrame"
frame.add(text);
// Dodanie ramki wewnętrznej do kontrolki "JDesktopPane"
Desktop.add(frame);
// Zaznaczenie dodanej ramki wewnętrznej
Desktop.selectFrame(false);
// Przeliczenie położenia następnej nowej ramki wewnętrznej
this.LocationX = this.LocationY = ((this.LocationX + 25) % 100);
}