2012-03-31 2 views
3

Я работал над проектом Java Swing, где мне нужно получить объект/экземпляр, создавший панель, чтобы вызвать простой метод сохранения, специфичный для этого экземпляра.Извлечь объект из компонента Java Swing

У вас есть JFrame с JTabbedPane, в котором есть вкладки, созданные путем создания класса, который создает JPanel и добавляет его в JTabbedPane. Мне нужно найти конкретный экземпляр из выбранной вкладки JPanel/на JTabbedPane, чтобы вызвать ее сохранение метод.

Любые идеи? Спасибо за ваше время!

public class frame extends JFrame implements ActionListener{ 
Builds a frame dubbed "frame" that is static. 
Builds a static JTabbedPane dubbed "pane"and adds it to the frame. 
Creates a button that creates a new instance of sheet. 

public void actionPerformed(MAGIC!){ 
    See if a button on the panel has been pressed and uses the currently selected tab to locate the correct instance of sheet to run it's save method. 
} 
} 

public class sheet extends JPanel{ 
In constructor makes a JPanel and adds it to "pane" 

Describes a save method that outputs a variable unique to the instance. 
} 
+0

Я думаю, что для лучшей конкретной помощи вам нужно сообщить нам больше подробностей вашего текущего кода. Используете ли вы программное обеспечение для создания кода для создания графического интерфейса, такого как создатель gui NetBean? –

+2

Нет, я делаю это вручную, чтобы лучше узнать о Java и Swing. – user1305495

+1

1+ проголосовать за этот комментарий. –

ответ

1

Я выяснял все, что мне нужно было сделать магазин новые вкладки объекты в ArrayList Derp. Спасибо за ваши попытки, хотя ребята!

+0

Поздравляем с исправлением! Когда вы в состоянии, пожалуйста, отметьте свой ответ как «принятый», чтобы другие могли учиться на вашем успехе. Cheers ~ –

+0

Ой, еще до этого, мне нужно сказать, что проблема была вызвана неправильным использованием расширений класса. Когда вы расширяете класс, он сам становится объектом, который вы расширили, что означает, что вы можете - в моем случае запустить команду save из него. Просто запомните это ключевое слово при обращении к самому классу! – user1305495

0

Вы можете добавить поле в новые JPanels, которые указывают на экземпляр создателя. Я не думаю, что есть такой метод, чтобы указать на родительский класс в API.

--EDIT-- Вы можете проверить http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html getSelectedIndex() может быть то, что вы ищете.

+0

Я знаю, что это звучит глупо, но как я могу это сделать? Я никогда не использовал указатели напрямую, не говоря уже о языке, который не имеет указателей в типичном смысле. >< Ty для ответа, хотя! – user1305495

+0

@ user1305495: Он означает просто дать вашему GUI-классу переменную, содержащую ссылку на ее создателя, вот и все. –

+0

Я думаю, что у вас неправильная идея, я обновлю вопрос с помощью некоторого псевдокода, чтобы подробнее разобраться в том, что объяснение каким-либо другим способом дает мне немного головную боль ... – user1305495

0

Вместо того, чтобы просто подключиться к первоначальному создателю, мой подход к этому заключался в создании/использовании интерфейса, который явно поддерживает сохранение. Я создал что-то для этого в ТУС, мой SourceForge проект

http://tus.svn.sourceforge.net/viewvc/tus/tjacobs/io/filepersist/

Отъезд Persistable и Persistable2. Конечно, все, что может быть Persistable, но абстракция позволяет вам уйти от явных связей назад к создателю класса

+0

Я мог бы попробовать, но я боюсь, что я не самый опытный интерфейс>< – user1305495

+0

Теперь, возможно, самое подходящее время, чтобы получить некоторый опыт! – ControlAltDel

Смежные вопросы