Dúvida com JOptionPane [RESOLVIDO]

Gostaria de saber se existe alguma forma de criar uma janela de diálogo que exiba uma mensagem por uns 3 segundos, por exemplo, e feche sozinha após esses 3 segundos. Só a mensagem, sem qualquer tipo de botão(Ok, Cancel, YES_NO_Option).

Eu estava usando o JOptionPane, mas não obtive êxito. Também dei uma olhada na API e achei o JPopUpMenu, mas não creio que seja a solução. Se alguém puder me ajudar, grato.

Sim. Crie um JDialog com a mensagem.

E use um Timer para fechar a janela após 3 segundos. Para saber mais sobre o Timer, leia:
http://www.guj.com.br/posts/list/15/52964.java#279088

Valeu VinyGodoi.
Fiz a classe que eu estava criando estender JDialog e boa.
Em relação ao Timer, eu acabei nem usando porque já tinha
minha Thread pronta pra isso, mas mesmo assim agradeço.

Agora vou tentar resolver o problema de alinhar duas labels que
eu tenho nesse JDialog, que está adicionando uma por cima da outra,
quando na verdade deveria ser uma embaixo da outra, no Centro
do JDialog.

//ele coloca a labelB por cima da labelA, e acabo vendo apenas a label B
this.getContentPane().add(labelA).setLocation(SwingConstants.CENTER, SwingConstants.NORTH);
this.getContentPane().add(labelB).setLocation(SwingConstants.CENTER, SwingConstants.SOUTH);

Se você puder me dar uma dica pra isso também.

Mas Dúvida principal sanada. Valeu!!!

Que layout manager vc está usando?

Eu não setei nenhum layout. Estou tentando jogar os componentes direto no JDialog.

Se vc não setou nada, o dialog vem com um padrão, que não é o nulllayout.

Esse padrão varia. Se for no Netbeans, ele deixará por padrão o layout dele, que nunca lembro o nome. Se for feito no braço, vai ser o BorderLayout, se não me engano.

O ideal mesmo é setar um layout manager diferente de null, e definir os componentes de acordo com ele. Sem saber o que você está fazendo direito, fica mesmo difícil posicionar objetos, ou mesmo dar uma dica… :wink:

Uma idéia poderia ser:

seuDialog.setLayout(new BorderLayout());
seuDialog.add(BorderLayout.NORTH, labelA);
seuDialog.add(BorderLayout.SOUTH, labelB);

Obrigado Vini, mais uma vez, rsrs.

Eu havia começado a me bater com o GridBagLayout, e tinha resolvido parcialmente o problema:

  • Mostrava as duas labels, mas uma ao lado da outra, rsrsrs

this.setLayout(new GridBagLayout);
this.getContentPane().add(labelA);
this.getContentPane().add(labelB);

Eu tava brigando pra colocar uma em cima da outra. Sua solução foi beeeeeeem melhor.
Você conhece algum material bom para aprender swing? Swing é o meu calcanhar de Aquiles, rsrs.
Mais uma vez, OBRIGADOOU!!!

Para usar o GridBadLayout vc precisa definir, antes de posicionar os componentes, uma série de Gridbagconstraints. É um trabalho chato e extenuante. Geralmente, é melhor usar algum tipo de editor visual que te ajude, como o Visual Editor do Eclipse.

Outra opção é baixar um gerenciador de layout de terceiros, como o MigLayout.

Um bom material está no site da própria sun:
http://java.sun.com/docs/books/tutorial/uiswing/layout/using.html