Formatos de Interface Gráfica - JAVA

34 respostas
OliverG

Boa noite,

Estou tentando aprender a criar uma interface gráfica em Java, porem não quero ficar no arrasta e solta, e tive bastante dificuldades kkk, bom aprendi algumas coisas, porem gostaria de saber qual é o melhor formato para desenvolver uma interface gráfica em Java no eclipse, tentei utilizar o JPanel + o GridBagLayout onde organizamos os objetos através de Linhas e colunas porem, fica difícil pois eu gostaria de colocar objetos de vários tamanhos, porem quando tento por ficam desalinhados.

Se alguém puder ajudar.

34 Respostas

TerraSkilll

Depende do caso, não existe uma solução única para tudo. O único jeito de “pegar a manha” é lendo e praticando, não tem solução mágica. E você acaba tendo hierarquias complexas, com jpanels dentro de jpanels e mais de um tipo de alinhamento em cada um deles. Fazer layous complexos na mão costuma tomar bastante tempo, por isso existem ferramentas como o Netbeans.

Abraço.

OliverG

Terra Skilll Obrigado por responder.

Um grande professor me disse que aplicativos como Netbeans entre outros geram códigos desnecessários e difícil de dar suporte ou manutenção, isso é vdd?

Estou questionando, pois quero realmente aprender da melhor forma e do jeito certo.

Att

Rafael Gomes

TerraSkilll

Não sei dizer se são desnecessários, mas o código gerado costuma ser extenso e difícil de ler (basta criar uma tela com alguns componentes e dar uma olhada no código gerado pra ver isso). Mas a ideia de ferramentas como o Netbeans é justamente cuidar dessa parte, então não é um problema tão grande assim. Se for pra criar no Netbeans mas dar manutenção na mão, é melhor não usar o Netbeans mesmo. :man_shrugging:

Como eu disse antes, cada caso é um caso. Por exemplo, imagina que seu chefe te pede uma ferramenta pra fazer uma conversão (importa um arquivo X, exporta um arquivo Y). Se ele te der 2 meses pra fazer, você pode fazer na mão e enfeitar bastante (supondo que a conversão não é complexa). Mas se ele te der 1 dia, é preferível você focar no que importa (a conversão X => Y ), fazendo uma interface básica e só depois, se tiver tempo, aperfeiçoar a interface.

Não sei a complexidade do que você está tentando fazer aí, mas o que recomendo, se você realmente quer se aprofundar nisso, é fazer telas simples na mão usando os layouts básicos (ex: um editor como o bloco de notas). Isso deve te dar uma boa noção de como funciona a interface.

PS: tenha em mente que o Swing (e java desktop) não tem grande mercado, então provavelmente não é algo que você precise se dedicar enormemente, se está aprendendo ainda.

Abraço.

OliverG

Então no meu caso, estou desenvolvendo alguns apps Desktop, para agilizar alguns trabalho que realizo na empresa que trabalho, como se fosse um Scrip mas com interface, por isso de questionar, para mim o mundo Java ainda é novo, estou fazendo um curso onde ele abrange todos os aspectos do Java, mas vc não aprende se não praticar kkk. Logo logo entro no modulo web e lá quero me aprofundar no assunto.

bdot

Pelo relatado, o javafx é melhor.
No swing é melhor usar arrasta e solta mesmo pois manualmente é mais trabalhoso.

staroski

A própria documentação do GridBagLayout explica que ele é complexo pra utilizar manualmente, que ele foi desenvolvido pra ser usado em editores visuais.

Particularmente não gosto de usar editor visual, geralmente geram código desnecessário, geram métodos gigantes, criam variáveis de instância pra tudo…

Costumo implementar as telas na unha usando composições de Containers com diferentes LayoutManagers em cada Container.

OliverG

Staroski andei pesquisando sobre a documentação, existe vários tipos de mapear o layout, como disse ainda sou jovem nessa área e me deparo as vezes com um algo que pra mim a solução é complicada, mas nada do que pesquisar afundo, mas deixo claro que detesto depender de aplicativos de terceiro, minha meta é desenvolver na unha como disse, pois assim consigo aprender mais e evoluir minha experiência.

davidbuzatto

Use o NetBeans, não fique sofrendo. Eu sinceramente não entendo pq ainda usam o Eclipse. Esse papo de que editor WYSIWYG gera código gigante, então eu não uso, eu acho a maior bobagem… Enfim, gosto é gosto.

OliverG

David obrigado pelo conselho.

Qual é a diferença em um código estruturado manualmente e que vc sabe o que está acontecendo entre um código aleatório gerado pelo sistema e que se for precisar fazer alguma melhoria ou manutenção irá ficar perdido.

Vc usa por ser prático? ou por que tem dificuldade em desenvolver manualmente?

OliverG

Particularmente prefiro criar algo que eu entendo e que me sinto bem em fazer.

javaflex

Não perde seu tempo escovando bit. O mais importante é ser produtivo, focar no resultado esperado pelo cliente.

Não importa o código extenso que o editor visual gere, você vai dar manutenção da UI em maior parte do tempo pelo editor. Quando eu programava pra desktop nunca precisei me meter no que o editor gerava. Pouco me importava o código gerado, o editor se virava pra fazer o que eu queria. Na prática não influenciava em nada, nem diferença significativa em desempenho.

Eu usava posicionamento absoluto mesmo. Mas era um outro tempo, em que as empresas tinham resolução de vídeo padrão. Depois que migramos pra web responsividade passou a ser necessário nesse tempo.

E uma curiosidade, pq em pleno 2020/21 está perdendo tempo com Java desktop?

j-menezes

Não vai nessa do papinho de que desktop Java já era, conversinha!!!, tem programas que precisam ser feitos em desktop por uma serie de razões.
Tem momento e uso para tudo e cada um deve saber desse momento e necessidade.
Outra coisa, é perfeitamene plausivel usar desktop com internet, ligada a hardware quando precisa enfim…, tem coisa que requer velocidade e flexibilidade.

E alem do mais com JavaFX dá pra rodar o programa dentro do navegador sem mesmo precisar de JVM, vide https://www.jpro.one/?page=demos e da pra rodar em dispositivos moveis veja a solução da gluon https://gluonhq.com/products/mobile/

Agora falando do seu caso de interface grafica em Java, Swing é ótimo mas JavaFX é mais moderno e o editor Scene Builder é excelente pra fazer tela e inves de fazer aqueles complexos javaBeans para anexar dentro da IDE que usa Swing, colocar dentro do Scene Builder é mais facil que tirar doce de criancinha.

javaflex

Concordo. Mas hoje Java é fora de cogitação para novas aplicações desktop, principalmente JavaFx que poucos adotam no mercado. Electron com Js é uma das tecnologias mais usadas hoje para aplicações desktop. Só quem é viciado em Java continua em Java.

Outra coisa importante é priorizar o que precisa estudar para o objetivo. Se o objetivo dele for entrar no mercado, a maioria das vagas são pra Java web, então nesse caso melhor nem ficar perdendo com Java desktop.

davidbuzatto

Só tenho 16 anos de experiência com Swing e acredite, já fiz MUITA coisa na mão, principalmente antigamente que usar IDEs tipo o NetBeans era quase impeditivo. Não vale a pena ficar sofrendo!
Quando vc sair do trivial, vai ter que fazer muita coisa na mão, mesmo usando uma IDE.

Acho uma puta perda de tempo ficar sofrendo na unha pra posicionar componentes, registrar manipuladores de evento etc. Claro que criar na mão vai te render muita experiência e é importante saber como as coisas funcionam, mas a partir do momento que vc sabe o que é o que, ficar escrevendo tudo manualmente passa a ser perda de tempo.

davidbuzatto

Boa!

j-menezes

Essa foi de lascar, Electron com JS pra desktop só se for na sua terra que isso é uma das mais usadas hoje em dia.
JavaFX é mundialmente usado e não para de crescer. é que talvez voce não acompanha e por isso acha que nao tem uso.

Sim sou viciado em Java, Eu gosto de qualidade.

Já quem gosta de porcaria deve ficar na merda.

j-menezes

Idem, fiz tantos componentes JavaBeans em swing e tantas bibliotecas java que perdi a conta.

j-menezes

Trabalhei e trabalho com as 2 bibliotecas.

Realmente Swing manual é mais trabalhoso, mas ai esta a força dele.

JavaFX como já mencionei é moderno, zoom, 3d, efeitos, aceleração de hardware, inumeras melhorias de perfomace, navegador embutido,nunca foi tão legal e facil fazer raspagem em paginas html (bom o Dic swing era legal tambem), dentre outras coisas interessantes.

Em relação a separar a tela da logica, isso dá pra fazer em ambos.

No NetBeans, como Eu não gostava do codigo que ele gerava, fiz um plugin e passou a gerar do meu gosto, veja que legal são essas Ides.

No JavaFX com Scene Builder gera as telas em fxml.

No entanto pode fazer tudo manual e isso não tem nada a ver necessariamente com a IDE.

javaflex

Anda meio ultrapasado. WhatsApp desktop, Teams, Github desktop, Visual Studio Code, Discord. São só alguns exemplos feitos em Electron com js.

davidbuzatto

Cara, o JavaFX eu fiquei no hype quando lançou, por volta de 2010, mas veio meio capenga né… Faltavam componentes aí desencanei desde então… Tá top mesmo? Preciso dar uma segunda chance!

j-menezes

Deu pra contar nos dedos das maos essa sua listinha, agora se Eu for passar aqui a lista de programas feitos em JavaFX esse forum fica pequeno.

j-menezes

JavaFX tá o bicho.

javaflex

Só citei alguns dos mais famosos publicamente, que inclusive muitos aqui usam no dia a dia. Nunca vi nenhum software famoso e importante feito em JavaFx.

j-menezes

Não se trata exatamente de fama e sim de uso real, mas só pra citar a agencia mais importante da Terra usa, a nasa. E outra, esses programinhas fracos que vc citou podem mesmo ser feitos em electron + js, já para coisas serias e complexas esqueça.

javaflex

Isso é de 2016. Já estamos quase em 2021. Hoje Java não tem muita relavancia no mercado desktop, web sim.

j-menezes

Pra ver a força do JavaFX, se fosse ruim já teriam trocado.
E nas portas de 2021 continuam dando manutencão no codigo e esta atualizadissimo.
JavaFX versao 14 e 15 de 2020

javaflex

Legado nenhum problema manter.

j-menezes

Legado é Cobol, Pascal e não coisa de 4 anos com constantes atualizações.
Vc precisa rever seu conceito de legado.

OliverG

Galera achei bacana a discussão entre todos, mas vamos lá.

Sobre Java envolvendo apps Desktop, qual é melhor para desenvolver Javafx ou Swing, se for Swing qual é o melhor gerenciador de layout para utilizar, onde eu posso fazer o que eu quiser com os elementos que eu criar.

j-menezes

Para mim JavaFX esta melhor para desenvolver, alem de tudo que ja’ escrevi.
No entanto o que pode ser bom para mim pode não ser pra voce.
Não tem como voce pensar com a minha mente, no entanto existe uma coisa que se chama fato, em todos os testes que fiz o JavaFX é mais rapido que Swing alem de ser mais moderno com mais recursos.

OliverG

j-menezes

Existe alguma documentação onde posso estudar o JavaFx, lembrando que por enquanto gostaria de evoluir meu conhecimento, no modo manual.

j-menezes

JavaFX é uma delicia desenvolver com ele, e sim tem um montão de documentação na net alem é claro de foruns especializados com programadores experientes que usam a tecnologia.
Uma simples consulta no google e vc vai se surpreender com a quantidade de coisa e a qualidade dele.
Mas sugiro começar pelos otimos tutoriais da Oracle.

Esse é legal tambem

staroski

Tamo junto coleguinha, também fiz muita tela na munheca, basicamente de 2002 à 2007 não usei editores visuais.

No início, cheguei a usar bastante o editor visual do “IBM Visual Age for Java”, aí ele foi descontinuado e passei a usar o eclipse, que na época ainda não tinha editor visual.

Cheguei a testar o Borland JBuilder, Fortè for Java, Sun One Studio, Net Beans, mas todos eles geravam muito código desnecessário, chamavam explicitamente setters para propriedades passando os valores default, criavam variáveis de instância pra tudo e geravam métodos gigantes e o pior de tudo, os editores visuais te induzem a não usar as interfaces MVC do Swing, por isso a galera apanha tanto usando DefaultTableModel, ou adicionando itens diretamente no JComboBox ao invés de usar ComboBoxModel, usam KeyListener e FocusListener para tratar ações que deveriam ser tratadas no DocumentModel dos componentes de texto e por aí vai…

Como eu já tinha uma disciplina de desacoplar lógica das telas, não me importava em “desenhar” elas na mão, como a lógica não estava implementada nas telas e sim em outras classes controladoras e de objetos de domínio, a manutenção era fácil, e o código era leve.

davidbuzatto

Show de bola colegão :wink:

Criado 29 de novembro de 2020
Ultima resposta 2 de dez. de 2020
Respostas 34
Participantes 7