Quinta-feira, Janeiro 25, 2007

SwingX - JXImagePanel

JXImagePanel é um JXPanel especial para imagens. Pode ser editável e, nesse caso, permite que o usuário escolha outra imagem através de um JFileChooser.

Futuramente, irá prover mais serviços para manipulação de imagens como tiling, scaling, resizing, cropping (recorte), segways e outros.

Configuração

Adicione uma imagem ao JXImagePanel com o método setImage(Image image).

// Ver figura 1.
JXImagePanel imagePanel = new JXImagePanel();
try {
.....BufferedImage img = ImageIO.read(
.........................JXImagePanelTest.class.getResourceAsStream(
........................."SoccerDukeSmall.png"));
.....imagePanel.setImage(img);
} catch (Exception e) {
.....e.printStackTrace();
}


Defina se a imagem de JXImagePanel é ou não editável através de setEditable(Boolean editable).

imagePanel.setEditable(true);

Serviços

Ajuste o estilo da imagem de um JXImagePanel com o método setStyle(JXImagePanel.Style style). JXImagePanel.Style é um enum com três constantes (na versão SwingX 0.8.0): CENTERED, SCALED e TILED.

imagePanel.setStyle(JXImagePanel.Style.CENTERED);
// Ver fig. 2.


imagePanel.setStyle(JXImagePanel.Style.SCALED); // Ver fig. 3.


imagePanel.setStyle(JXImagePanel.Style.TILED); // Ver fig. 4.


Problemas ? (1)

A documentação de JXImagePanel, diz que o posicionamento padrão da imagem começa na posição 0,0 do painel.

Se isso fosse correto, a figura 1, com um JXImagePanel no modo padrão, e a fig. 2, com estilo centralizado não seriam idênticas. Ou seja, contrariando o que diz a documentação dessa classe, o modo padrão é o estilo centralizado.

Problemas ? (2)

Ao menos na versão SwingX 0.8.0, não há como utilizar JXImagePanel.Style.SCALED_KEEP_ASPECT_RATIO, pois esta constante foi retirada do enum JXImagePanel.Style.

Problemas ? (3)

Ao definir um JXImagePanel com setEditable(Boolean editable), assim que se clicasse na imagem deveria aparecer um JFileChooser para que o usuário tenha a oportunidade de escolher outra imagem para o painel. Contudo, com o simples passar do mouse pelo componente JXImagePanel, uma excessão é gerada.


Veja outros componentes SwingX em:

Referências:

0 comentários: