MigLayout - componentes esticando para fora da janela [RESOLVIDO]
8 respostas
erico_kl
Olá pessoal…
Acredito que muitos já devem ter passado por isso com o MigLayout, o problema é o seguinte: tenho um JComboBox com a propriedade “growx” em um painel que utilizo em vários JFrames e em cada um deles o tamanho é diferente… só que quando o texto inserido no JComboBox nao cabe completamente dentro dele, este estica para fora do painel (ao invés de cortar o texto do campo, quando o tamanho é fixo)… nao tem alguma forma de fazer o combo crescer porém sem estourar os limites do painel?
Oi, erico, beleza?
Posta o seu código pra eu dar uma analisada?
Abraços,
fique com Deus!
erico_kl
opa..
na verdade é uma simples inserção de um combo no painel..
publicclassPanelTesteextendsJPanel{publicPanelTeste(){initGUI();}privatevoidinitGUI(){this.setLayout(newMigLayout("","[][grow]","[]"));JComboBoxteste=newJComboBox(newString[]{"Teste 1","Teste 2 esticando para fora do painel","Teste 3"});this.add(newJLabel("Combo:"));this.add(teste,"growx");}publicstaticvoidmain(String[]args){JFrameframe=newJFrame();frame.add(newPanelTeste());frame.setSize(250,70);frame.setVisible(true);}}
Nicolas_Fernandes
erico_kl:
opa..
na verdade é uma simples inserção de um combo no painel..
publicclassPanelTesteextendsJPanel{publicPanelTeste(){initGUI();}privatevoidinitGUI(){this.setLayout(newMigLayout("","[][grow]","[]"));JComboBoxteste=newJComboBox(newString[]{"Teste 1","Teste 2 esticando para fora do painel","Teste 3"});this.add(newJLabel("Combo:"));this.add(teste,"growx");}publicstaticvoidmain(String[]args){JFrameframe=newJFrame();frame.add(newPanelTeste());frame.setSize(250,70);frame.setVisible(true);}}
Cara,
Ao invés de setar o tamanho fixo do painel:
frame.setSize(250, 70);
Porque você não usa o método pack()? Ele redimensiona o painel de acordo com o arranjo dos componentes. A sua JComboBox vai ficar do tamanho do maior texto que ela contém e o painel vai ter o tamanho desejado.
frame.pack();
Faz o teste aí e nos dê o reply.
Espero ter ajudado,
fique com Deus! :D
erico_kl
o problema é que eu tenho esse painel em vários frames diferentes, e em cada frame o painel tem uma largura diferente.. e esse é o problema..
e mesmo usando o pack, só serviria na abertura do frame, mas se em tempo de execução eu adicionar no combo um ítem com descrição maior, o problema vai ser o mesmo.. e eu preciso que o combo, mesmo recebendo dados dinamicamente, sempre fique do mesmo tamanho inicial..
um exemplo simples do que eu quero dizer (mesmo usando pack):
publicclassPanelTesteextendsJPanel{privateJComboBoxteste;publicPanelTeste()throwsInterruptedException{initGUI();JFrameframe=newJFrame();frame.add(this);frame.pack();frame.setLocationRelativeTo(null);frame.setVisible(true);Thread.sleep(5000);teste.addItem("Teste 4 esticando para fora do painel. Teste realizado às "+newDate());}privatevoidinitGUI(){this.setLayout(newMigLayout("","[][grow]","[]"));teste=newJComboBox(newString[]{"Teste 1","Teste 2 esticando para fora do painel","Teste 3"});this.add(newJLabel("Combo:"));this.add(teste,"growx");}publicstaticvoidmain(String[]args)throwsInterruptedException{newPanelTeste();}}
F
fasts
Já tentou tirar o grow das constraints principais do layout, ali onde tu instancia o MigLayout?
Eu nunca tive essa situação, mas acho que resolve.
Se não der, tente setar o tamanho pelo layout ali no this.add(teste, “growx”)
erico_kl
fasts:
Já tentou tirar o grow das constraints principais do layout, ali onde tu instancia o MigLayout?
Eu nunca tive essa situação, mas acho que resolve.
mas aí o combo não vai crescer até o limite do painel (pois a coluna não vai crescer), e mesmo tirando não resolve…
não entendi o que vc quis dizer, vc quer fixar um tamanho?
F
fasts
Tu não pode fixar o tamanho, então, né?
Tenta fazer com spanx, growx.
erico_kl
fasts:
Tu não pode fixar o tamanho, então, né?
Tenta fazer com spanx, growx.
cara, realmente resolveu com spanx… antes eu só havia usado o span pra mesclar células, mas neste caso resolveu o problema… o combo estica somente até o limite do painel, que era o que eu precisava…