Urgentissimo: gridbaglayout e component

13 respostas
argentinaluiz

ola galera

estou montado uma aplicacao usando como o layout de um jpanel o gridbaglayout,
até ai tudo bem!

será que alguém conhece um metodo que mapeie esses componentes,
eu queria algo que pudesse passar como parametros o gridx e o gridy
e me retornar o componente!

13 Respostas

G

Por que vc não utiliza o posicionamento do layout em si, cria uma classe que reavalia o posicionamento do componemte filho no posicionamento do componente “mãe”, tipo …

mãe tem origem na 50 e filho na 30, então da mãe pra filha tem 20 …

falando em layout vc sabe me dizer como trabalho direito com layout null, tem algum tuto ou algo do genero ?

até mais

argentinaluiz

o null layout é o usado em aplicacoes em que a janela nao e dimensionavel, voce tem que usar o setbounds para posicionamento dos componentes

G

Você conseguiu fazer o que queria ?

bem eu tentei colokar o set bounds mas mesmo assim não esta funcionando corretamente, os componentes adicionados nem chegam a aparecer na tela mesmo com Set visible() e tudo … Esta se tornando um problema minha ideia de criar o codigo na mão estou quase fazendo por aquela barrinha feliz do netbeans

mas valew assim mesmo

argentinaluiz

o problema que eu ate poderia fazer isto que voce disse, só que nao posso porque as vezes tenho 1000 componente em um panel ou mais e se eu fizer um for para verificar os componentes ficara extremamente pesado pois as vezes posso ter que percorre-lo mais de 10000 vezes, ou seja 10000x1000 nao da!

argentinaluiz

voce esta usando um jframe?

se sim, antes de adicionar os componentes adicione esta linha:
seuframe.setLayout(null);

fabiofalci

Algumas considerações sobre o null layout

http://leepoint.net/notes-java/GUI/layouts/nulllayout.html

argentinaluiz

o fabio

estou montado uma aplicacao usando como o layout de um jpanel o gridbaglayout,
até ai tudo bem!

será que alguém conhece um metodo que mapeie esses componentes,
eu queria algo que pudesse passar como parametros o gridx e o gridy
e me retornar o componente!

G

Bem eu intendi o que você disse que poder faltar memoria pela uso ecessivo da classe, porém a do java terá o mesmo problema, será que é tão relevante assim a diferença, já que eu falei pora você fazer uma classe que pessa como parametros get X e Y assim você não vai fazer nada muito diferente do que a api faria ...

velho ... não top enxergando o que vc disse olha meu codigo por favor e ve se tem algo errado, já revisei mas sei lah

package adsrbeta02;

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Painel extends JFrame {

    public Painel() {
        
        JPanel principal = new JPanel();
        JLabel p1 = new JLabel("Ambiente de Desenvolvimento de Software para Robótica (ADS-R)");
        JLabel p2 =new JLabel("teste principal, versão 1");
       // GridBagLayout gm=new GridBagLayout();
      
        this.setBounds(100, 100, 800, 600);
        this.setLayout(null);
        this.setTitle("Painel principal");
        this.add(principal);
        principal.setBounds(100, 100, 800, 600);
        principal.setBackground(Color.orange);
       p2.setBounds(120, 120, 100, 50);
        principal.add(p1);
          principal.add(p2);
        p1.setLocation(100, 100);
        this.setVisible(true);
        p1.setVisible(true);
        principal.setVisible(true);
G

quando tento setar a posição ele não me obedece

fabiofalci

Cada componente tem a posição X, Y e o tamanho…
Dado dois x e y tu pode ir um por um pra ver se está na área do componente.

Mas por curiosidade, pq tu precisa disso?

argentinaluiz

o cara seu codigo nao tem erro, mas roda o que eu to te passando!

import java.awt.Color;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class Painel extends JFrame {

public Painel() {   
       
    JPanel principal = new JPanel();   
    JLabel p1 = new JLabel("Ambiente de Desenvolvimento de Software para Robótica (ADS-R)");   
    JLabel p2 =new JLabel("teste principal, versão 1");   
   // GridBagLayout gm=new GridBagLayout();   
     
    this.setBounds(100, 100, 800, 600);   
    this.setLayout(null);   
    this.setTitle("Painel principal");   
    this.add(principal);   
    principal.setBounds(100, 100, 800, 600);   
    principal.setBackground(Color.orange);   
   p2.setBounds(120, 120, 100, 50);   
    principal.add(p1);   
      principal.add(p2);   
    p1.setLocation(100, 100);   
    this.setVisible(true);   
    p1.setVisible(true);   
    principal.setVisible(true);   
	}  
	  public static void main(String args[])
	  {
	   new Painel();
	  
	  }

}

argentinaluiz

eu leu um arquivo e atraves deste monto em um painel um certo numero de label que pode ser muito grande,
posicionar os label na tela nao e problema, o problema é na hora de pega-los de volta, o getcomponet nao serve pq so se passa um parametro para ele e eu queria passa dois parametros para me retornar o componente o gridx e o gridy!

G

XD

continuou errado ...

intendi o que vc quer, mas eu não sei ...

como disse o máximo que pensei era ....
classe{

contrutor(getX1,Y1mãe, get X2,Y2 filho){
this.x=x1 ....

}
publico double  retornarisso(){

return String ;
}
}

e na rpincipal, vc coloca um split da tividir o string em doubles novamente , bem velho vou sair do comp. espero ter ajudado ...

flw

Criado 13 de novembro de 2008
Ultima resposta 13 de nov. de 2008
Respostas 13
Participantes 3