Alguém conhece algum tutorial de um formulário em JavaFX acessando banco de dados? Os que encontrei foram somente com desenhos.
Opaaa…
tambem quero
=)
Você pode usar um DAO Java na sua aplicação… O mesmo DAO de sua aplicação WEB, Swing…
Faça um teste!
Coincidentemente, estou descrevendo uma APP usando JavaFX e banco de dados, em breve postarei em algum site…
Mas siga esse exemplo que é muito, muito velho!!! fiz com JavaFX 1.1, perceba que só existiam dois layouts na época, pelo meu comentário no código…
EDIT: OBS: Este exemplo é velho… Não me julguem por isso, mais um vez falando :S
Antes, quero deixar claro que embora muitas pessoas apontem os problemas de JavaFX como sendo performance, falta de componentes blá blá, eu digo que o maior problema do JavaFX é o Deploy… isso eu apanhei e apanho para fazer!!!
Enfim, meu Script JavaFX:
/*
Exemplo de aplicação utilizando banco de dados com a View no JavaFX
É utilizada uma interface simples, no entanto, você pode aplicar os conceitos para aplicar a uma interface mais aprimorada! Uma interface RICH
*/
/*************************************Import's*/
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.ext.swing.*; //Componentes Swing disponiveis para uso no JavaFX
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.input.MouseEvent;
import dao.DaoNome;
import javafx.util.Sequences;
import javafx.scene.paint.Color;
/*************************************Declaração de variáveis*/
var painel: Scene; //"Onde tudo Acontece!"
var txtNome: SwingTextField; //Campo de texto do componente
var btnAdicionar: SwingButton; //Botao para adicionar
var btnBuscar: SwingButton; //Busca
var btnApagar: SwingButton; //Apagar
var barraSuperior: VBox; //Caixa com os widgets
var painelConteudo: VBox; //O conteúdo do banco de dados!
var conteudo: SwingLabel[]; //Os dados que estarão sendo trabalhados no programa
var dao: DaoNome; //Nosso DAO
var atual: SwingLabel; //O nome Atualmente Selecionado
//Estilos !
var styleBtn: String = "height:30; width: 150;";
/*************************************instanciando*/
txtNome = SwingTextField{height: 20; width: 200;}
dao = new DaoNome();
/*
O Gerenciamento de Layout em Java FX é feito exclusivamente com somente
o gerenciador Vertical (VBOX) e o horizontal(HBOX)
*/
painelConteudo = VBox{
spacing: 5;
content: [
SwingLabel{ text: "Dados:"},
VBox{
translateX: 30;
content: bind conteudo
}
];
}
btnAdicionar = SwingButton{
style: styleBtn;
text: "Adicionar";
onMousePressed: addNome;
}
btnBuscar = SwingButton{
style: styleBtn;
text: "Buscar";
onMousePressed: buscar;
}
btnApagar = SwingButton{
style: styleBtn;
text: "Apagar";
onMousePressed: apagar;
}
barraSuperior = VBox{
translateX: 10;
translateY: 10;
spacing: 10;
//Content é uma sequence( tupla ) que recebe
//os componentes que ficarão armazenados
content:[
HBox{
spacing: 5;
content:[
SwingLabel{ text:"Nome:"},
txtNome
]
},
HBox{
spacing: 5;
content:[
btnBuscar,
btnAdicionar,
btnApagar
];
}
]
}
painel = Scene{
content: VBox{
spacing: 15;
content:[
barraSuperior,
painelConteudo
];
}
}
/*************************************Funções*/
//Todo Listener tem que receber um atributo do tipo Mouse
function addNome(e: MouseEvent){
dao.inserir(txtNome.text);
delete conteudo;
busca(txtNome.text);
return;
}
function buscar(e: MouseEvent){
busca(txtNome.text);
if(sizeof conteudo == 0){
insert
SwingLabel{
text: "Não foram encontrados resultados!";
foreground: Color.RED;
}
into
conteudo;
}
return;
}
function apagar(e:MouseEvent){
dao.apagar(atual.text);
busca(txtNome.text);
return;
}
function busca(texto: String){
delete conteudo;
var dados = dao.buscaDadosPessoais(texto);
for(txt in dados){
insert
SwingLabel{
text: txt;
onMousePressed: setarAtual;
}
into
conteudo;
}
}
function setarAtual(e: MouseEvent){
if(atual != null){
atual.foreground = Color.BLACK
}
atual = conteudo [ Sequences.nextIndexOf(conteudo, e.node, 0) ];
atual.foreground = Color.RED;
return;
}
/*************************************Frame*/
//Usamos a forma declarativa para gerar a tela
Stage{
height: 400; width: 500;
scene: painel;
title: "Acessando banco de dados com JavaFX"
}
Meu dao ridículo e antigo(nunca façam um DAO como este, é só o meu DAO antigo):
package dao;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DaoNome {
MySQLCon con;
public DaoNome(){
con = new MySQLCon();
}
public String[] buscaDadosPessoais(String nome){
ResultSet rs = null;
String[] dados = null;
try {
rs = con.retornaComando().executeQuery("SELECT COUNT(nome) FROM pessoa WHERE nome LIKE '"+nome + "%'");
rs.next();
dados = new String[rs.getInt("COUNT(nome)")];
if( dados == null) throw new Exception("Não há resultados");
rs = con.retornaComando().executeQuery("SELECT * FROM pessoa WHERE nome LIKE '"+nome + "%' ORDER BY nome");
int i=0;
while(rs.next())dados[i++] = rs.getString("nome");
} catch (Exception e) {
e.printStackTrace();
}
con.desconectar();
return dados;
}
public boolean apagar(String nome){
try {
con.retornaComando().executeUpdate("DELETE FROM pessoa WHERE nome = '"+nome+"'");
con.desconectar();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
public boolean inserir(String nome){
try {
con.retornaComando().executeUpdate("INSERT INTO pessoa(nome) VALUES('"+nome+"')");
con.desconectar();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}
}
}
EDIT: Imagem:
[]'s
Ótimo exemplo, bem didático! Parabens!
Vou testar qndo tiver oportunidade!
At.
Wallfox
eu preciso de qual jar no meu projeto pra funcionar.
eu baixei o sqljdbc4.jar do site da microsoft e nao deu certo, da esse erro:
alguem saberia me ajudar?
Hey…
Um tutorial legal sobre JavaFX begin, você irá encontrar na Java Magazine, nesta última edição(ed: 72), que foi feito pelo Osvaldo Doederlein.
Ainda não consegui me concentrar totalmente nele, mas pelo que vi é bem interessante. Só que não é em BD, é apenas um Arquivo que ele trabalhar atavés de IO.
No caso dae você podem utilizar o exemplo do Jesuino!
Assim que eu estudar este tutorial, irei pesquisar algo sobre BD com JavaFX e deixo informações aqui!
[]'s
Muito interessante o exemplo. Só uma dúvida como colocar isso na WEB? Afinal pelo que eu entendi ai todo o processamento está no cliente e nada no servidor.
[quote=rafaelbtz]Muito interessante o exemplo. Só uma dúvida como colocar isso na WEB? Afinal pelo que eu entendi ai todo o processamento está no cliente e nada no servidor.
[/quote]
respondi seu post anterior:
http://www.guj.com.br/posts/list/142061.java
[]'s