JFrame personalizada

Olá pessoal.
Eu desenvolvi uma janela a partir de um JFrame, com barra de título personalizada e suporte à efeitos visuais e gostaria de compartilhar com vcs. Quem puder testar e dar feedback eu agradeço. No jar estão os fontes, javadoc e binários (é só executar).

Eu utilizei a classe com.sun.awt.AWTUtilities para o formato e as transparências, mas não funciona no Debian, apesar dos métodos isTranslucencyCapable() e isTranslucencySupported() retornarem true. Alguém sabe porque?

Muito legal! Estava procurando materiais sobre isso! Vou dar uma estudada nos fontes!

cara parabens pela iniciativa
estava precisando muito melhorar a interface grafica dos meus aplicativos

Parabéns, adicionei nos meus favoritos, tenho certeza que vou aprender muito com o seu exemplo.

Obrigado!

Oi,

O efeito fadding ficou bom. Parabéns.

Tchauzin!

Como consigo adicionar esses efeitos em uma JDialog ?

Como JDialog herda de java.awt.Window, fica fácil. Dê uma olhada nas classes de efeito (TranlucencyEffect, ShadowEffect, ReflectionEffect, FaderEffect e AbstractWindowEffect). Todas possuem os métodos

void addWindow( Window w );
void applyEffect();
void removeEffect();

Então basicamente é utilizar essas classes para aplicar os efeitos no JDialog. Mas cuidado, nem todos os efeitos podem ser aplicados juntos à mesma janela, podem desconfigurar todo o visual.

public class frm_cadastro_grade_cor extends javax.swing.JDialog {

/** Creates new form frm_cadastro_grade_cor */
public frm_cadastro_grade_cor(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();

    FaderEffect e = new FaderEffect();
    e.addWindow(this);
    e.applyEffect();
    e.removeEffect();

Tenho uma tela JFrame() que chame uma Jpanel (que é a citada acima).
Quando chamo o Jpanel pelo Jframe() chamo assim:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

    frm_cadastro_grade_cor frm = new frm_cadastro_grade_cor(new JFrame(), true);
    frm.setVisible(true);

}                                        

Ao iniciar a minha JPanel:

public class frm_cadastro_grade_cor extends javax.swing.JDialog {

/** Creates new form frm_cadastro_grade_cor */
public frm_cadastro_grade_cor(java.awt.Frame parent, boolean modal) {
    super(parent, modal);
    initComponents();

    FaderEffect e = new FaderEffect();
    e.addWindow(this);
    e.applyEffect();
    e.removeEffect();

Porém, eu tenho que apertar Alt+F4(fechar) para que a janela mostre o efeito… é como se estivesse outra jpanel oculta mas sem foco, ai quando dou Alt+F4, mostra a JPanel com o efeito…

sabe me dizer se estou fazendo o certo?
quando quiser adicionar o efeito FaderEffect tenho que fazer assim mesmo depois do InitComponents() da JPanel()?
FaderEffect e = new FaderEffect();

Realmente, tava com um pequeno bug.
Eu criei esse código no java 6, mas rodando no java 7 o compartamento mudou um pouco.
Fiz um ajuste na classe FaderEffect e agora funcionou.
Só tem um problema pra vc, pra funcionar o JDIalog tem que estar undecorated, o que pode complicar a funcionalidade do JDialog.
Mas segue o jar recompilado e um código que criei pra testar.

public class MyDialog extends JDialog {

  private FaderEffect fe;
  
  public MyDialog() {
    super((JFrame)null, "MyDialog", true);
    this.setLocationRelativeTo(null);
    this.setUndecorated(true);
    this.setSize(300, 200);
    this.add(new JLabel("MyDialog"));
    fe = new FaderEffect();
    fe.addWindow(this);
  }
  
  public void open() {
    fe.applyEffect();
  }

  public void close() {
    fe.removeEffect();
  }
  
  public static void main(String[] args) {
    MyDialog md = new MyDialog();
    md.open();
    try { Thread.sleep(5000); } 
    catch(InterruptedException e) {}
    md.close();
  }
}

Espero que ajude.

Perfeito.
Funcionou o efeito FaderEffect();

Cara vc é fera!

Vou ver como fica os outros efeitos dentro do JDialog agora…

Grande abraço!

Valeu. Abraço.

Não querendo abusar, mas ja abusando…
Este efeito não se pode colocar em um JInternalFrame ?
Estou tentando colocar, mas pelo que estou vendo, é necessario que se tenha um frame do tipo Window, e o JInternalFrame() não é desse tipo

Não funcionará com JInternalFrame. O componente deve herdar de java.awt.Window e no caso de frames devem ser configurados como undecorated.

Muito bom este tópico!
Estou com uma dúvida relacionada a personalização. Vocês já passaram por este desafio abaixo?

Meu MDI abre uma JInternalFrame vazia.
Meu JInternalFrame adiciona meu JPanelCadastro.
Meu JPanelCadastro adiciona minha JPanelMinhaToolBar.
Meu JPanelMinhaToolBar possui um JButtonFechar.
Meu JButtonFechar precisa fechar a JInternalFrame.

Consigo acessar o JInternalFrame diretamente pela JPanelMinhaToolBar?

Não consegui acessá-lo nem pelo JPanelCadastro. Quando executo… this.getParent().setVisible(false); …o próprio JPanelCadastro fica invisível em vez do JInternalFrame.