Encontrei um pequeno framework pra validacao no swingo (http://www.javalobby.org/java/forums/t20551.html) e fiz uma pequena alteração, para que em lugar de utilizar um JDialog para exibir a mensagem de validação, utilizaae um JPanel, colocado na POPUP_LAYER do JDialog ou JFrame que contém o componente sendo validado. Isso porque quando um JDialog é usado, caso a janela seja movido, a mensahgem de validação não se move junto.
O problema que estou tendo é pra posicionar a mensagem de validação. eu gostaria que ela ficasse posicionada logo abaixo do componente, a esquerda, como mostra na Figura2 anexa. Mas o que está ocorrendo é que a mensagem está ficando sobre o componente sendo validado, como mostra a figura 1.
Alguém sabe como resolver isto?
Segue o código que estou utilizando pra posicionar o JPanel (com a mensagem de validacao) proximo ao componente (ex: jtextfield) sendo validao. Este código está gerando o resultado da figura 1.
/**
* c componente sendo validado
*/
private void initComponents(JComponent c) {
JLayeredPane layeredPane;
if (parent instanceof JFrame) {
layeredPane = ((JFrame)parent).getLayeredPane();
} else if (parent instanceof JDialog) {
layeredPane = ((JDialog)parent).getLayeredPane();
} else {
throw new IllegalArgumentException();
}
popup = new JPanel();
layeredPane.add(popup);
layeredPane.setLayer(popup,JLayeredPane.POPUP_LAYER);
popup.setLayout(new FlowLayout());
popup.setBackground(popupBackgroundColor);
popup.setFocusable(false);
popup.setVisible(false);
popup.add(image);
popup.add(messageLabel);
point = c.getLocation();
int locationX = point.x;
int locationY = point.y;
Container container = c.getParent();
Container topContainer = c.getRootPane();
while (!container.equals(topContainer)) {
point = container.getLocation();
locationX += point.x;
locationY += point.y;
container = container.getParent();
}
cDim = c.getSize();
popup.setLocation(locationX, locationY + (int) cDim.getHeight());
}
Valeu!

