Java читать и сохранять элементы графического интерфейса - PullRequest
3 голосов
/ 26 ноября 2011

У меня вопрос по поводу доступа к элементам GUI.Например, имея простую программу с графическим интерфейсом на Java, как я могу прочитать и сохранить иерархию элементов Swing GUI на дереве (например, включая главное окно, фреймы, кнопки, текстовое поле, поле со списком и т. Д.).

1 Ответ

4 голосов
/ 26 ноября 2011

Swing-приложения уже организованы в деревья. JFrame является корнем, дети могут посещать:

Component[] components1 = mFrame.getContentPane().getComponents();

Каждый компонент имеет подкомпоненты, которые вы можете получить:

// Assuming component is a container
((Container)component).getComponents(); 

Сохранение этих элементов в файл - это простая операция. Вот хорошая статья , чтобы дать вам оценку.

РЕДАКТИРОВАТЬ Прелесть потоков в том, что вы можете использовать файл, как если бы вы использовали сокет :) Таким образом, превращение ComponentSerializer компонента для сериализации в файл вместо сокета требует 0 изменений:)

Скажем, у вас есть JFrame, который вы хотите сохранить / прочитать в / из файла, вы делаете следующее:

OutputStream output = new FileOutputStream("FileName.bin");
JFrame myFrame = new JFrame();
ComponentSerializer serializer = new ComponentSerializer();
serializer.write(myFrame, output);

// Reading from file
InputStream in = new FileInputStream("FileName.bin");
ComponentSerializer serializer = new ComponentSerializer();
JFrame myFrame = (JFrame) serializer.read(in);
myFrame.setVisible(true);
...