Formatos de Interface Gráfica - JAVA

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.

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.

1 curtida

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

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.

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.

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

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.

1 curtida

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.

1 curtida

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.

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?

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

1 curtida

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?

1 curtida

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.

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.

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.

Boa!

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.

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

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.

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