Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

zasuk

Como construir uma UI

Mensagens Recomendadas

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?

:)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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??

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 :) ).

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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 :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.