Seja bem vindo ao Fórum do JavaFree.org
Aqui você irá encontrar respostas para TUDO o que você precisa sobre java.
Deseja participar? Crie sua conta ou efetue seu login
Bem gente, estou desenvolvendo um sistema com Layout Null, porém se a resolução da máquina não estiver igual a da máquina onde foi desenvolvido a visualização da aplicação fica meio prejudicada.
Existe alguma forma de deixar essa resolução dinâmica para que o sistema se enquadre em qualquer resolução? O NetBeans por exemplo, é escrito em java e se adapta perfeitamente a resuloção da máquina.
Existe alguma forma de fazer isso sem usar Layouts pq na realidade eles atrapalham mais do que ajudam.
Bem não consegui encontrar nenhum Layout que me servisse, como estou desenhando com o netbeans e quem ja usou ele, sabe que o melhorzinho é o desenho livre, e mesmo assim ele bagunça tudo tentando te ajudar. Dai pra não perder muito tempo coloquei tudo pra null.
Com relação a solução postada o que eu queria era fazer o inversso ou seja, fazer com que a aplicação adote a resolução que estiver definida no SO.
Talvez de pra pegar a resolução do SO como no seu exemplo e aplicar no frame com setSize();
Com relação a solução postada o que eu queria era fazer o inversso ou seja, fazer com que a aplicação adote a resolução que estiver definida no SO.
O aplicativo sempre utiliza a resolução atual do monitor.
Script
Talvez de pra pegar a resolução do SO como no seu exemplo e aplicar no frame com setSize();
Pelo que entendi na verdade você não quer mudar a resolução, você quer mudar o tamanho da janela do seu aplicativo.
Acontece que como seu layout é null, os componentes vão ficar todos no lugar que estão, então se você aumentar a janela, seu aplicativo vai ficar com um monte de espaço vazio...
A menos que você queira fazer o contrário:
Aplicar ao monitor uma resolução de acordo com o tamanho da sua janela.
Aí basta você percorrer as configurações de resolução válidas e setar aquela que fica mais próxima do tamanho da sua janela.
Coloca um print-screen da sua janela, posso te dar umas dicas de que layouts aplicar nela. _________________Ricardo Artur Staroski, OCP-JP
Blumenau - SC
Blz, staroski valeu mesmo, vai ser de grande ajuda, realmente não tenho muita habilidades com Forms gráficos pois como todos já sabem antes de java eu escrevia em clipper, ou seja, tudo modo texto, estático,...
de clipper pra java da água para o vinho em
ok, aqui vai algumas screes. Apartir dessas já dar pra eu ter uma idéias pras outras.
Só pra cosntar, no frama principal eu tenho um JDesktopPane, e todos os forms que se abrem no programa são JInternalFrames que abrem dentro dele.
blz, mas e pro Frame principal e o JDesktopPanel? que layouts usar? pq tipo quando a resolução deminuir o frame principal deve diminuir tb junto com o JDesktopPanel. Na verdade to aqui penssando como ficaria isso. pq se o JDesktopPanel diminuir as janelas que se abrem dentro dele também devem diminuir, senão vai ficar desproporcional. Digamos que eu queira que os InternalFrames abram no centro no JDesktopPanel, se o jdesktoppanel dimunuir os internalframes devem diminuir tb para que assim possam abrir centralizados. Ou meu raciocinio não está correto?
Agora sua dúvida ficou confusa...
Por acaso você vai ficar alterando a resolução do monitor com o aplicativo em execução? É essa sua preocupação?
Exemplo hipotético: Você modelou sua janela principal para ter um tamanho normal de 1024 x 768 pixel e está preocupado em abrir ela numa máquina configurada com resolução 800 x 600 pixel?
Nesse caso ao ser inicializado o seu aplicativo pode utilizar os métodos do link que postei no outro post e alterar a resolução na marra.
Em relação aos layouts: Por default Frames possuem BorderLayout e Panels possuem FlowLayout.
O layout do JFrame principal não haveria porque alterar, pois dificilmente seus componentes serão inseridos diretamente nele, você só vai inserir o JDesktopPane na posição BorderLayout.CENTER do Frame principal.
Basicamente há duas alternativas para as outras telas:
1º Criar um JDesktopPane para a tela principal e JInternalFrames para as subtelas do sistema.
2º Criar um JPanel principal com CardLayout é criar outros JPanels para as subtelas do sistema.
Como você optou pela primeira opção não há porque se preocupar com o layout do JDesktopPane, ele sabe se virar pra renderizar os JInternalFrames.
Quanto aos JInternalFrames, ao abríl-os basta você dar um setLocationRelativeto(componentePai) para centralizá-los.
Se não me engano, quando eles estão no estado maximizado eles diminuem de tamanho juntamente com o JDesktopPane se você diminuir a janela.
Na pior das hipóteses você terá de adicionar um ComponentListener no JDesktopPane e avisar os JInternalFrames quando ele for redimensionado, se fizer isso, utilize uma classe controladora, fica mais elegante...
Fazer o aplicativo mudar a resolução do vídeo não axo muito legal, pois o usuário pode querer realizar outras tarefas na máquia ao mesmo tempo que mexe no sistema e tb pode ter preferência por uma determinada resolução, pessoas com dificudades visuais geralmente gostam de resoluções menores (janelas grandes). se os Frames tem BorderLayout um JDesktopPanel colocado nele seria redimencionado junto com o frame no caso de aumento ou diminuição da resolução, correto? Minha preocupação é, que eu crie os internalframes com base na hipotese que o frame principal tem a resolução 1152x864, e o usuário rode a aplicação com a resolução 800x600, isso fará com que o frame principal diminua de tamanho e junto com ele tb o Jdesktoppane, se existir um internalframe que ocupava quase tudo o o desktoppane na resolução 1152x864, em 800x600 esse internalframe ficaria sendo cortado pelos limites do frame principal, resumindo, quando o usuário muda a resolução da máquina apenas o frame principal é ajustado os sobframes do sistema não são.
Abaixo segue uma screen da mesma tela de casdatro de produtos que mandei anteriormente agora com a resolução do monitor em 800x600
Repare que o frame principal foi perfeitamente ajustado para a nova resolução, porém os internalframes que se abrem não são, fazendo com que não caibam na tela.
Sendo assim os internalframes teriam que diminuir tb o seu tamanho com base na nova resolução do desktoppane para que assim possam caber dentro dele. Essa screen foi tirada com as janelas em null layout, não fiz a modificação ainda.
Existem algum layout que faça isso? Isso ja é feito automáticamente? Ou vai ser preciso implementar isso no braço?
Os JInternalFrames se ajustam ao tamanho do JDesktopPane, porém eles precisam estar no estado maximizado pra isso ocorrer. _________________Ricardo Artur Staroski, OCP-JP
Blumenau - SC
ummm, quer dizer que não existe uma solução(layout ou método) pronta para isso, nem que eu usse layouts em tudo, acho que a solução seria a dica que vc deu anteriormente, de fazer o JDesktopPanel avisar que mudou de tamanho, ummm MVC na veia?
O ruin é que não tenho experiência com esse padrão
ScriptPosts:168
Bem gente, estou desenvolvendo um sistema com Layout Null, porém se a resolução da máquina não estiver igual a da máquina onde foi desenvolvido a visualização da aplicação fica meio prejudicada.
Existe alguma forma de deixar essa resolução dinâmica para que o sistema se enquadre em qualquer resolução? O NetBeans por exemplo, é escrito em java e se adapta perfeitamente a resuloção da máquina.
Existe alguma forma de fazer isso sem usar Layouts pq na realidade eles atrapalham mais do que ajudam.
Grato!
staroskiPosts:3414