Skip to content

Category: Uncategorized

JavaFX, Exemplos Básicos

Alguns exemplo básicos de JavaFX usando a construção de interfaces de forma declarativa.
Para testa-los eu recomendo o JavaFX Pad ou o plugin JavaFX para Netbeans.

import javafx.ui.*; 

Frame {
    title: "Label JavaFX"
    width:  300
    height: 50
    content: Label {
            text: "Olá Mundo!"
    }
    visible: true   
}

JavaFX label

import javafx.ui.*;
import java.lang.System;

Frame {
    title: "Botão JavaFX"
    width:  300
    height: 100
    content: Button {
           text: "Clique-me"
           action: operation(){
              System.out.println("Botão pressionado");
           }
    }
    visible: true   
}

Botão em JavaFX

import javafx.ui.*;
import java.lang.System;

Frame {
  title: "Menu JavaFX"
  width:  300
  height: 100
  menubar: MenuBar {
    menus: Menu {
      text: "Menu"
      items:  foreach (name in ["Menu1", "Menu2", "Menu3"])  
              MenuItem {
                text: name
                action: operation() {
                  System.out.println("MenuItem: {name}");
                }
             }
     }
  }
    visible: true
}

JavaFX Menu

import javafx.ui.*;
import java.lang.System;

var N = 4;

Frame {
    title: "Tabela JavaFX"
    width:  300
    height: 150
    onClose: operation(){ System.exit(0); }
    content: Table {
        columns: [
        TableColumn {
            text: "numero"
        },
        TableColumn {
            text: "quadrado"
        },
        TableColumn {
            text: "cubo"
        }]
        
        cells: bind foreach(n in [1..N])[
        TableCell {
            text: "{n}"
        },
        TableCell {
            text: bind "{n * n}"
        },
        TableCell {
            text: bind "{n * n * n}"
        },
        ]
    }
    visible: true
}

JavaFX Tabela

import javafx.ui.*;

var selectedTab = 0;

Frame{
    title: "Tab Example"
    width: 300
    height: 120
    content: BorderPanel{
        top: Label { text: bind "Selected tab: {selectedTab + 1}" }
        center: TabbedPane{
            selectedIndex: bind selectedTab
            tabs: foreach(i in [1..5])
            Tab {
                title: "Tab{i}"
                content: Label{ text: "Label{i} "}
            }            
        }
    }
    visible: true
}

JavaFX abas

import javafx.ui.*;

Frame {
    title: "FlowPanel JavaFX"
    width:  300
    height: 100
    content: FlowPanel{
        content: [
        Label{ text: "Label1" },
        Label{ text: "Label2" },
        Label{ text: "Label3" },
        ]
    }
    visible: true
}

JavaFX FlowPanel

import javafx.ui.*;

Frame {
    title: "BorderPanel JavaFX"
    width:  400
    height: 200
    content: BorderPanel{
        top   :  Button{ text: "Topo" }
        center:  Button{ text: "Centro" }
        bottom:  Button{ text: "Fundo" }
        left  :  Button{ text: "Esquerda" }
        right :  Button{ text: "Direita" }
    }
    visible: true
}

JavaFX BorderPanel

Esses exemplos eu retirei da página de exemplos do Wiki do JavaFX (russo). Se você quiser saber mais sobre componentes de interface gráfica em JavaFX veja o tutorial
Learning More About the JavaFX Script Language (for Swing Programmers).

Gato em JavaFX

Meu primeiro desenho com JavaFX.

Gato em JavaFX

Código-fonte:

import javafx.ui.canvas.*;
import javafx.ui.*;

Canvas {
    content: [
    // cat head
    Ellipse { cx:200, cy:100, radiusX:100, radiusY:50, fill:black },
    // right ear
    Arc { x:200, y:10, height:150, width:100,
        startAngle:-20, length:90, closure:PIE, fill:black},
    // left ear
    Arc { x:100, y:10, height:150, width:100,
        startAngle:110, length:90, closure:PIE, fill:black},
    // left eye
    Ellipse { cx:160, cy:100, radiusX:30, radiusY:15, fill:white},
    Ellipse { cx:160, cy:100, radiusX:5, radiusY:15, fill:black},
    // right eye
    Ellipse { cx:240, cy:100, radiusX:30, radiusY:15, fill:white},
    Ellipse { cx:240, cy:100, radiusX:5, radiusY:15, fill:black},
    // nose
    Arc { x:185, y:110, height:20, width:30,
        startAngle:45, length:90, closure:PIE, fill:white},
    ]
}

Sim, foi uma tentativa de reproduzir este outro gato. 🙂

Bixos da Computação 2008.1

Bixo que ainda não tem a menor noção do que o aguarda
Bixo pintado é bixo feliz!

Minhas boas vindas aos “bixos” do curso de Computação 2008.1 da Universidade Federal do Ceará na sua caminhada que agora se inicia rumo a sua formação de computólogo. 😀 As fotos tiradas com minha câmera estão aqui.

Bixo pintado
Bicho azul.

Caloura
Sim, nós temos bixetes.

Bixo careca
Rapaz, eu achei esse bixo parecido comigo na época que eu entrei no curso. 😮

Bichete ganhou um teclado sem fio
Bixete feliz ganhadora de um incríveis mouse e teclado sem fios. Cortesia do Laboratório LIA.

Bixos
Acostumem-se. Na computação é trote o ano todo!

Bixo ganha camisa

camisa_laranja.JPG

Bixo ganhador da camisa “Eu faço programa”.

Mais uma bixete
Mais uma bixete pintada.

Eu peguei o email da maioria dos calouros. Estamos organizando a nossa tradicional Semana Zero e provavelmente vamos ter três cursos: Software Livre, Java e Netbeans. Eu aproveitei para entregar para cada bixo um CD com o Netbeans para aqueles mais curiosos. Não é a última versão do Netbeans mas já é uma IDE utilizável e há o ambiente Java dentro do CD. É um desses bons CDs para se ter sempre na mochila.

Netbeans 5.5

Eu pegando o mail de um bixo

Os cursos vão ser no laboratório LEC e no LIEST ainda estão em reformas e eu não apostaria que eles estarão prontos a tempo do início das aulas.

LEC

Mas não se preocupem, vamos dar um jeito nisso. 😉

obs: Meu irmão foi ontem receber os bichos da engenharia, as fotos estão aqui.

Tipo um Barcamp

Estamos levando a frente aqui no Ceará a desconferência mais desconferente do Brasil através de encontros esporádicos da cena blogosferica cearense no restaurante Parque Recreio.

Foto do nosso barcamp de janeiro
No canto esquerdo, Gabriel imerso em suas preocupações envolvendo WordPress, do lado Gil e sua família, os outros não dá para ver e eu tentando fazer o Wifi funcionar e a Deborah do meu lado. Foto do Leonardo Sales.

Como sempre entramos na madrugada como sempre conversando sobre tudo, desde PHP até Zumbis e as vezes até falando de Blogs. 😀

Para participar do próximo evento, entre na comunidade BlogCamp Fortaleza.

É nóis na mídia

Tô chique. Saiu uma matéria comigo e com o Caio do Brogui.com no jornal Diário da Manhã (Goiânia) em uma matéria intitulada “Como arrecadas dinheiro com blogs”.

Eu na capa do Diário da Manhã
A setinha é para mostrar que eu não sou a matéria sobre violência. 😛

A jornalista Edilaine Pazini entrou em contato comigo e nós trocamos alguns emails e telefonemas para discutir sobre monetização de blogs. Pela matéria até parece que eu sou um barão da blogosfera, o que não é verdade nem de longe. Mas eu fiquei bem contente com o conteúdo da matéria, pena que não houve um link para o eupodiatamatando.com. É sempre muito bom ver a mídia tradicional levando os blogs com mais seriedade do que o de costume.

Para ver a matéria você pode ir na versão online do jornal aqui e procurar na seção de Economia na página 10, ou clicar na imagem abaixo:

Clique para ampliar

E aproveitando a deixa, o Café Com Tapioca desse mês também apareceu na mídia. Foi no jornal O Povo. Eu vou apresentar uma mini-palestra sobre Netbeans 6.

obs: eu tirei várias fotos legais para usar alguma no jornal. Agora estou usando elas como avatar. Agradecimentos a Samaria Confecções e Miudesas (Tel: 3081-4139) na rua Desembargador Leite Alburquerque, no. 844, Aldeota, aqui em Fortaleza. Quando eu precisar de alguma fantasia é lá que eu vou. 😉

Gerando permutações

Muitas vezes para resolver uma única instância de um problema é mais rápido ataca-lo com força bruta do que encontrar um algoritmo geral com uma boa ordem de complexidade. Permutações são de grande utilidade nesse tipo de abordagem.

Permutações em Prolog:

Esse é um código em Prolog que o Wladimir Araujo passou na cadeira de IA.

select(X, [X|Xs], Xs).
select(X, [Y|Ys], [Y|Zs]) :- select(X, Ys, Zs).

permutar([], []).
permutar(Xs, [Z|Zs]) :-
    select(Z, Xs, Ys),
    permutar(Ys, Zs).

Permutações em Python:
Esse é um código de um certo Michael Davies que eu tirei daqui. Ele gera uma lista com todas as permutações de uma lista. Muito bonitinho. 🙂

def all_perms(str):
    if len(str) <=1:
        yield str
    else:
        for perm in all_perms(str[1:]):
            for i in range(len(perm)+1):
                yield perm[:i] + str[0:1] + perm[i:]

Um exemplo de uso:

>>> for p in all_perms(['a','b','c']):
	print p
['a', 'b', 'c']
['b', 'a', 'c']
['b', 'c', 'a']
['a', 'c', 'b']
['c', 'a', 'b']
['c', 'b', 'a']

Outras implementações:
Em outras linguagens o código para gerar permutações geralmente é muito grande, então eu preferi deixar alguns links.

Monitor de Memória do Netbeans

Você já viu em algum screencast um monitor de memória na barra de ferramentas do Netbeans?

Monitor de memória

Bem lega, né? Essa ferramenta mostra um gráfico animado do consumo de memória do Netbeans. Ele também permite que você chame a Coleta de Lixo clicando nele

Para ativar essa ferramenta no Netbeans 6 (download), vá em View → Toolbars → Memory.

View → Toolbas → Memory

Binha Dormindo

Binha dormindo
Binha, a poodle da Juliana (aka Cheetos).

Reparem que ela usou a coleira para tapar os olhos. Engraçado, não é a primeira vez que eu vejo um cachorro usar essa técnica. Eu também não consigo dormir sem um lençol para cobrir o rosto.