Preciso recuperar alguns objetos de um JPanel e mostralos num outro formato nas mesmas posições. Para isso pretendo gerar o XML do JPanel e depois salvar em um outro formato.
Não tenho muita experiência com XML, mas é possivel armazenar esta informação no XML?
Sim. Procure um framework que transofrm objetos em XML.
Rode este programa. Ele mostra um botão “OK”. Aperte-o, ele gera um arquivo “hello.xml”.
import java.awt.*;
import java.awt.event.*;
import java.beans.XMLEncoder;
import java.io.*;
import javax.swing.*;
public class Hello extends JFrame {
public Hello ( ) throws IOException {
super("Hello World with Swing");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton bOK = new JButton("OK");
getContentPane().add(bOK);
bOK.addActionListener (new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
XMLEncoder xe = new XMLEncoder (new BufferedOutputStream (
new FileOutputStream ("hello.xml")));
xe.writeObject (Hello.this);
xe.close();
} catch (IOException ex) {
}
}
});
}
public static void main (String[] args) throws IOException {
Hello ret = new Hello();
ret.pack();
ret.setVisible(true);
}
}
Na minha máquina, sem modificar o tamanho, o arquivo teste.xml gerado foi:
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2_06" class="java.beans.XMLDecoder">
<object class="Hello">
<void property="size">
<object class="java.awt.Dimension">
<int>127</int>
<int>60</int>
</object>
</void>
<void property="visible">
<boolean>true</boolean>
</void>
<void property="name">
<string>frame0</string>
</void>
</object>
</java>
Experimentei então alterar o tamanho da janela com o mouse, e então criar novamente hello.xml. Veja a diferença abaixo.
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.2_06" class="java.beans.XMLDecoder">
<object class="Hello">
<void property="size">
<object class="java.awt.Dimension">
<int>382</int>
<int>231</int>
</object>
</void>
<void property="visible">
<boolean>true</boolean>
</void>
<void property="name">
<string>frame0</string>
</void>
</object>
</java>
thingol
Muito bom este exemplo. Vou modificar ele mais. Pois na verdade o que tenho que fazer é dado que tenho um JPanel com varios objetos (por exemplo, labels) tenho que gerar um xml e a partir deste xml gerar um pdf com os objetos nas mesmas posições (x,y).
Valeu. Caso tenha mais alguma dica, ficarei grato.