Aplicação JavaFx com JInternalFrame's integrado dentro da aplicação Fx

Estarei ensinando como fazer uma integração dos JinternalFrame em uma aplicação JavaFx, após varias ‘‘Googleadas’’ por ai não obtive sucesso, então resolvi tentar fazer essa integração, como diz o ditado ‘‘A Necessidade faz o Sapo Pular’’ .

  • Criaremos uma aplicação JavaFx Desktop, como mostra a imagem.

  • E configurar da seguinte forma, no meu caso criei uma aplicação com o nome de ‘‘RaulCrash’’ e não usei o Create Design File, mas você pode fazer da forma que você achar por bem.

  • Como eu não criei o meu arquivo mãe, devo criar agora, eu utilizei JavaFx Stage.

  • Após criado nosso arquivo nosso Stage, ele virá com o código default, mas por enquanto não iremos mexer nele agora.
  • Agora iremos criar um JinternalFrame(nome JIFramePrincipal), após criar adiciona o componente Swing JdesktopPanel (ou Painel da área de Trabalho).
  • Depois de adicionado o componente JDesktopPane(ou Painel da área de Trabalho), no JinternalFrame nosso (JIFramePrincipal), você ajusta o tamanho do JdestopPane preenchendo o espaço interno do JIFramePrincipal, depois iremos alterar o acesso ao nosso objeto JdesktopPanel , nas propriedades do mesmo, aba Código, Modificadores de Variáveis: altera para as opções ‘‘public’’ e ‘‘static’’.
  • Após o nosso objeto JdestopPanel configurado, adicional o código dentro do método construtor do nosso JIFramePrincipal, para deixar o nosso JinternalFrame sem as bordas e o cabeçalho, pra deixar mais bonito nosso aplicativo.
    public JIFramePrincipal() {
        initComponents();
        ((BasicInternalFrameUI) this.getUI()).setNorthPane(null); //retirar o painel superior
        this.setBorder(null);//retirar bordas
    }
  • Agora iremos adcionar esse código abaixo na nosso JIFramerincipal, esse método irá exibir as nossas telas dentro do nosso JdesktopPane(criei algumas telas para exemplo, cria uma ou duas ou quantas telas que você quiser e as ajuste-as conforme o seu gosto).
    public static JInternalFrame JIPessoa;
    public static JInternalFrame JIContaBanco;
    public static JInternalFrame JITitulos;

    public static void Exibir(String Tela) {

        //PESSOA
        if (Tela.equals("CAD_PES")) {
            if (JIPessoa == null || JIPessoa.isVisible() == false) {
                JIPessoa = new JICad_Pessoa();
                JDestopPrincipalManager.add(JIPessoa);
                JIPessoa.setVisible(true);
            } else {
                JIPessoa.setVisible(false);
                JIPessoa.setVisible(true);
            }
        }

        //CONTA BANCARIA
        if (Tela.equals("CAD_CONTA")) {
            if (JIContaBanco == null || JIContaBanco.isVisible() == false) {
                JIContaBanco = new JICad_Conta();
                JDestopPrincipalManager.add(JIContaBanco);
                JIContaBanco.setVisible(true);
            } else {
                JIContaBanco.setVisible(false);
                JIContaBanco.setVisible(true);
            }
        }

        //LANÇAMENTOS DE TITULOS
        if (Tela.equals("CAD_TITULO")) {
            if (JITitulos == null || JITitulos.isVisible() == false) {
                JITitulos = new JILanc_Titulos();
                JDestopPrincipalManager.add(JITitulos);
                JITitulos.setVisible(true);
            } else {
                JITitulos.setVisible(false);
                JITitulos.setVisible(true);
            }
        }

    }
  • Agora iremos criar novo arquivo Fx limpo com nome DesktopFx, (Novo arquivo->Empty JavaFx File), e adicionaremos o código que irá receber o nosso JIFramePrincipal.
package componSwing;
import javafx.ext.swing.SwingComponent;
import javax.swing.JInternalFrame;
import javax.swing.JComponent;
/**
 * @author Raul_
 */
// place your code here
public class DesktopFx extends SwingComponent{
    var Desktop : JInternalFrame;
    override protected function createJComponent () : JComponent {
        Desktop = new JIFramePrincipal;
        Desktop.setVisible(true);
        return Desktop;
    }
}
  • Agora iremos voltar ao nosso arquivo Fx principal ‘‘Inicio.fx’’, e iremos adcionar o botões para chamar as telas que criamos, você pode esta implementando efeitos melhorando o aspecto do seu menu conforme o seu gosto.
package inicio;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.scene.control.Button;
import componSwing.JIFramePrincipal;
import componSwing.DesktopFx;
import javafx.scene.paint.Color;

/**
 * @author Raul_
 */
Stage {
    title: "JavaFx com JInternalFrame"
    scene: Scene {
        width: 1000
        height: 950
        fill: Color.BLACK
        content: [
            //Componente criado
            DesktopFx {
                layoutX: 10
                layoutY: 60
                width: 980
                height: 850
            }
            Button {
                layoutX: 10
                layoutY: 15
                text: "Cadastro de Pessoas"
                action: function() {
                    JIFramePrincipal.Exibir("CAD_PES");
                }
            }
            Button {
                layoutX: 145
                layoutY: 15
                text: "Cadastro de Contas Bancarias"
                action: function() {
                    JIFramePrincipal.Exibir("CAD_CONTA");
                }
            }
            Button {
                layoutX: 320
                layoutY: 15
                text: "Lançamentos de Titulos"
                action: function() {
                    JIFramePrincipal.Exibir("CAD_TITULO");
                }
            }
        ]
    }
}

É isso ai pessoal, me desculpem qualquer coisa por erro de redundância ou por ter falado alguma besteira, mas queria compartilhar essa informação com vocês. =D

Video da Aplicação pronta : [youtube]http://www.youtube.com/watch?v=rhCUhLqnk6o[/youtube]

Muito bom Monstro da Tanzânia, depois me passa as dicas pessoalmente.
Abraço.

Valeu!

Postei no grupo JavaFX-BR também:

http://groups.google.com/group/javafx-br/browse_thread/thread/141d3883d7405f04

Obrigado por compartilhar :slight_smile:

Muito boa Jesuino… estou realizando também uma aplicação onde preciso abrir InternalFrames…Porém estou customizando nós para criar um similar ao jinternalFrame da Swing… para que eu n precise utilizar nada da swing.

Este seu código é um belo exemplo de integraçao do swing com javafx… grato!

[quote=root_]Muito boa Jesuino… estou realizando também uma aplicação onde preciso abrir InternalFrames…Porém estou customizando nós para criar um similar ao jinternalFrame da Swing… para que eu n precise utilizar nada da swing.

Este seu código é um belo exemplo de integraçao do swing com javafx… grato![/quote]

Lembrando que o código e o projeto é do usuário “RaulCrash”. :slight_smile: