Ola!
Fiz uma aplicação pra controle de pizzaria no NetBeans, onde eu tenho varias classes que herdam de JFrame, ou seja, o projeto tem varias janelas.
O problema é que eu fui criando tudo pelo modo visual do NetBeans, não setei nenhum Layout Manager em nenhuma dessas classes.
Fiz a aplicação num monitor de 19 polegadas, quando abro em um monitor de 17´ a tela fica “comida”, o Frame é maior que tela, e não consigo redimensiona-lo ao executar, diminui a janela, mas os componentes do Frame ficam do mesmo tamanho.
Eu sei que pra poder redimensionar durante a execução, teria que usar algum gerenciador de Layout, mas se eu mudar o gerenciador de Layout pra um Painel por exemplo, bagunça tudo, alguns componentes até somem.
Minha duvida é a seguinte:
Tem alguma forma de mudar o Gerenciador de Layout sem “bagunçar” o Frame, ou Painel?
terei que recomeçar tudo desde o começo pra conseguir consertar isso?
sugestao
crie um jscrollpanel, de um jscrollpanel.setviewport(seu jpanel), jscrollpane.setpreferredsize(dimension) e depois insira o jscrollpane no jframe
publicclassMeuFrameextendsJFrame{JScrollPanejScrollPane;JPaneljPanel;publicMeuFrame(){jScrollPane=newJScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);jPanel=newJPanel();//testejPanel.setBorder(BorderFactory.createLineBorder(Color.yellow,5));//testejPanel.setOpaque(true);//testejPanel.setBackground(Color.red);//testejPanel.setPreferredSize(newDimension(2000,300));//testejScrollPane.setViewportView(jPanel);jScrollPane.setPreferredSize(newDimension(500,500));//tamanho desejado do componentegetContentPane().setLayout(newBorderLayout());getContentPane().add(BorderLayout.CENTER,jScrollPane);pack();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}publicstaticvoidmain(String[]args){newMeuFrame();}}
B
Bruno_Ferreira1
Valeu ChronosSage
sua idéia é bacana, até usei aqui pra ver como ficava, mas não atende bem ao propósito, que seria conseguir ver a tela inteira, inclusive com o total.
Vou usar o setLayout e tentar rearranjar os elementos aqui
Obrigado!
Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
B
Bruno_Ferreira1
Comecei a reconstruir a janela principal utilizando o FlowLayout, por ser o mais simples.
mas mesmo assim, ao redimensionar a janela os componentes não estão sendo remanejados.
Tem algum metodo pra remanejar os componentes quando a janela for redimensionada?
C
ChronosSage
Bruno Ferreira:
Comecei a reconstruir a janela principal utilizando o FlowLayout, por ser o mais simples.
mas mesmo assim, ao redimensionar a janela os componentes não estão sendo remanejados.
Tem algum metodo pra remanejar os componentes quando a janela for redimensionada?
(respectivamente do melhor para o pior problema possivel)
mas se insiste
no jframe tem uns metodos como addWindowListener e outros parecidos, um deles é responsavel por adicionar action quando a janela muda de tamanho, para atualizar os container use “updateUI()” q será atualizado mas esse metodo so tem para containers e components swing(talvez seja necessario o uso de cast como (JPanel)getContentPane()), nao tem tbem para o jframe.
B
Bruno_Ferreira1
Eu fiquei fuçando ontem a noite, e percebi que o Flow Layout tambem não remanejava os componentes, ai tentei usar o GridBagLayout, achei ele meio complicado de início, mas até que consegui ir montando o Layout que eu quero, mas ele também não me deu o efeito desejado ao remanejar a janela. E também, se eu maximizar fica um espação sobrando em volta do frame.
Como resolver este problema, se as pessoas que vão utilizar o software podem ter monitores de varios tamanhos diferentes e varias resoluções diferentes?
Acho que vou setar as medidas do Frame para 800X600, comum nos monitores de 15 polegadas, e usar o setResize(false),
se o cara tiver um monitor maior, a janela ficara menor, mas não tera espaço sobrando em volta