Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
zasuk

Como construir uma UI

Recommended Posts

zasuk

Boas, sou novo no que toca a interface gráfica, pois na faculdade pouco abordaram esse assunto...

Aqui estao algumas duvidas que foram surgindo:

1º - Qual o melhor construtor de interfaces? (ja testei o do netbeams, mas n sei se existe algum melhor)

2º - É possivel usar Swing+JavaFX?

3º - Pode-se usar apenas JavaFX para construir uma interface? (sei que não é o mais adequado...mas pelo que vi permite tornar o ambiente mais "bonito")

4º - Como usar swingx no netbeams com ajuda do editor em modo grafico?

:)

Share this post


Link to post
Share on other sites
Knitter

1 - O editor do NetBeans IDE é o melhor que existe. Existe também para Eclipse embora em versão paga.

2 - JavaFX é Swing, tudo o que tens em Swing tens em JavaFX

3 - Ao usares JavaFX estás a usar Swing, embora possa não parecer devido à linguagem de scripting que do JavaFX, mas sim podes e deves usar JavaFX para construir interfaces, não sei onde é que te disseram que não é o mais indicado, é feito para isso. Pode não ser indicado para um projecto específico, mas dependerá do projecto se é ou não indicado.

4 - Podes adicionar os componentes da biblioteca SwingX à paleta de componentes do NetBeans IDE facilmente, de uma forma simples, basta carregares com o botão direito em numa zona do painel de componentes, adicionar uma nova secção, nessa secção adicionar os componentes escolhendo a biblioteca SwingX.

Share this post


Link to post
Share on other sites
zasuk

Vou ja testar :)

Realmente a linguagem do JavaFX é um pouco diferente do java que eu conheço...mas posso usar "java normal" junto com o codigo da interface em FX, certo??

Share this post


Link to post
Share on other sites
zasuk

Pelo que vi o JavaFx é idêntico a actionscript, até as classes ficam com uma extensão diferente....

Tendo eu todo o código desenvolvido em java, como faço para criar apenas a interface em javafx??

tentei adicionar os componentes do swingx, mas no pacote vinham dois jar's

swingx-2010_02_07.jar

swingx-beaninfo-2010_02_07.jar

seleccionei os dois e adicionei á minha palete..no entanto na palete os icons aparem todos com o mesmo símbolo, é normal, certo?

Share this post


Link to post
Share on other sites
Knitter

Passar para JavaFX não é simples, ou pelo menos não há nada que te permita fazer a conversão directa, terás de redesenhar toda a interface, no entanto podes ter mais trabalho que vantagens. Só tentando fazer a conversão é que se pode dizer se é vantajoso ou não.

Se tens uma aplicação feita em Java, para desktop, não vejo razão para a converteres para JavaFX, se queres melhorar o aspecto ou crias uma skin ou mudas o look-and-feel.

Já há algum tempo que não uso os componentes de SwingX, na altura os componentes ficavam todos com o mesmo ícone na paleta (e não palete :) ).

Share this post


Link to post
Share on other sites
zasuk

L&F já usei alguns que encontrei na net, mas como posso criar um meu?

se souberes de alguma documentação sobre isso, ou sobre criar skins disponibiliza-me :)

Share this post


Link to post
Share on other sites
Knitter

Existem vários links, basta uma simples pesquisa pelo google que encontras vários, um que podes ver é: http://java.sun.com/products/jlf/ed2/book/index.html

No entanto, criar o teu próprio convém teres bons conhecimentos de Swing, dos seus componentes e de como funcionam já que terás de definir o aspecto e comportamento de todos eles.

Podes também ver o Synth look and feel que permite a modificação com XML e criar skins mais facilmente, http://java.sun.com/docs/books/tutorial/uiswing/lookandfeel/synth.html

Share this post


Link to post
Share on other sites
shumy

Eclipse também têm o Visual Editor sem ser a pagar.


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites
magician

O JavaFX tem a meu ver o problema que actualmente ou tens também o javafx instalado ou então precisas de arrancar a aplicação por jnlp :S


I haven’t lost my mind; it’s backed up on DVD somewhere!

Share this post


Link to post
Share on other sites
Knitter

Não percebi qual é o problema.

JNLP não está relacionado com JavaFX, se o utilizador não tem suporte para JavaFX então não vais poder distribuir a aplicação JavaFX. Enquanto que JNLP pretende oferecer um mecanismo de distribuição de aplicações desktop, JavaFX tem um propósito diferente.

Share this post


Link to post
Share on other sites
magician

Sim a solução foi muito inteligente e flexível sem qualquer duvida! Mas acho que podiam tentar arranjar uma solução mais especifica para aplicações de Desktop como por exemplo acontece com o groovy em que tanto podes correr usando o groovy como usando normalmente o java e com o jar do groovy como lib.

Embora o JNLP seja sem duvida uma boa opção de flexibilidade não é a melhor para ter uma aplicação de Desktop pelo menos eu vejo dessa forma :|


I haven’t lost my mind; it’s backed up on DVD somewhere!

Share this post


Link to post
Share on other sites
P_E_D_R_O

Olá a todos  :P

Gostaria de fazer uma pergunta relacionada com UI's em JAVA. Explicando a duvida de forma simples, tenho uma GUI que tem dois botoes (JButton - "Fazer Pedido" e "Cancelar Pedido"). Quando clico no botão "Fazer Pedido" (onMouseClick) chamo o método "dormir" da classe "SleepProg" que básicamente o que faz é adormecer o programa durante um X tempo. O problema é que, se eu pretender cancelar o pedido, o botão para o efeito não funciona até que o progama volte a acordar. No "cancelar pedido" já experimentei fazer Thread interrupt() mas em vão.  :)

Ao ver que o meu problema não tinha sido solucionado, tentei criar uma Thread que tratasse de adormecer o programa, ficando a thread mae responsável pela continuação do programa, ou seja, permitindo clicar no botao cancelar e matando a thread filha mas, novamente, não tive sucesso. Apenas consigo clicar no botão cancelar antes de efectuar o pedido ou depois do programa acordar (Thread.sleep(300))

Alguém me consegue explicar o porquê desta situação estar a acontecer?

Obg a todos,

Abraços

Share this post


Link to post
Share on other sites
Knitter

Possivelmente porque a thread responsável pela interface gráfica está bloqueada. Falaste em uso de threads mas não explicaste bem como. O que me parece é que estás a bloquear a thread responsável pela interface gráfica, e consequentemente nenhum dos botões irá funcionar, ou qualquer outra operação da interface, enquanto ela estiver bloqueada.

Share this post


Link to post
Share on other sites
P_E_D_R_O

O único uso de threads que fiz foi criar uma thread responsável pela chamada do método dormir. Pelo que me está a parecer e, de acordo com o que disseste, thread responsável pela interface gráfica está bloqueada por defeito (isto até pode ser a maior barbaridade mas é o que me parece) pk não deixa de ser estranho ter uma GUI na qual, qd clicas num botão chama um método de outra classe e que dps fiques bloqueado à espera que o método dormir termine a execução...

Share this post


Link to post
Share on other sites
Knitter

Não é estranho, é o processo normal. O que precisas é tornar a thread de execução gráfica independente do programa que está por baixo para que possas ter um parado e outro em execução.

Quando invocas um método, só voltas a ter controlo na execução de código quando esse método terminar, tipicamente a execução é tão rápida que nem reparas nisso.

A solução passará por executares o código que pretendes parar numa thread separada da thread gráfica de modo a que possas ter as duas execuções em paralelo sem que uma bloqueie a outra.

Share this post


Link to post
Share on other sites
P_E_D_R_O

hum... sendo assim e corrige-me se estiver errado, quando clicas no botao "Fazer Pedido" (onMouseClick) chamas a classe XPTO onde lá dentro irás criar uma Thread que por sua vez irá chamar o método dormir, é isso?

Share this post


Link to post
Share on other sites
shumy

O teu problema é meramente de arquitectura. A camada de apresentação deve ser desacoplada do resto da aplicação.

O melhor é ter sempre uma arquitectura de cliente-servidor independentemente de ser uma aplicação "desktop".

Talvez seja bom estudar as arquitecturas MVC, embora possa ser algo complexo para o trabalho que pretendes podes tirar sempre algumas ideias.

É que parecendo que não, programar IU pode ser mais complexo do que parece. Sendo por vezes necessário alterar o paradigma de programação (orientado a eventos) e utilizar coisas que que não são habituais para gerir o multi-thread (métodos callback).


Aqui há coisa de 2 anos fazia umas malhas de croché, depois fartei-me e fui para informática!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.