Problemas com JLayeredPane

0 respostas
oitathi

Gente eu tô com uma duvida meio estranha…
eu tenho um uma classe que contem um metodo que desenha um buffer e o coloca dentro de um layer:

public Metodos{
    private IndexColorModel icm;
    private BufferedImage bf;

public Metodos(){
            icm = new IndexColorModel(8,256,r,g,b);
            bf =  new BufferedImage(mapWidth+600,mapHeight+600,BufferedImage.TYPE_BYTE_INDEXED,icm);
}

  public void drawMap(int p1, int p2,String t1,String t2){
        Graphics2D gr = bf.createGraphics();
        margem=(getTamBuf()-getmapWidth())/2;
        int xQuadro = p1+margem;
        int yQuadro = p2+margem;
        gr.setColor( Color.lightGray);
        gr.fillRect(0,0,mapWidth+800,mapHeight+800);
        wr = bf.getRaster();
        wr.setDataElements(300,300,mapWidth,mapHeight,vMap);
        gr.setColor(Color.black);
        gr.fillRect(xQuadro,yQuadro, 50, 20);
        gr.setColor(Color.white);
        gr.drawString(t1+" / "+t2, xQuadro+10,yQuadro+15);
        imagem1 = new JLabel();
        imagem1.setIcon(new ImageIcon(bf));
    }
      public JLabel getJLabelMap(){
         return imagem1;
    }
}

E em outra classe, eu tento resgatar esse JLabel e colocá-lo dentro de um JLayeredPane e nesse mesmo JLayeredPane, colocar um outro JLabel com um coisa qualeur escrita. Mas esse JLayeredPane tem que estar dentro de um ScrollPane:

public class Janela extends JFrame {
   private JLabel labelMapa;
   private JLabel messageLabel;
   private JScrollPane scrollImage;

  public Janela(){
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
        setMinimumSize(new Dimension(515, 545));
        setSize(515, 545);
        setLayout(null);
        setLocationRelativeTo(null);
        scrollImage = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollImage.setLocation(0,0);
        scrollImage.setSize(500, 500);
        scrollImage.setVisible(true);
        metodos= new Metodos();
        getListaAirport= newAirport.getListaAirport();
        insertItens();
}

public void insertItens(){
    labelMapa = new JLabel();
    labelMapa.setLocation(0,0);
    labelMapa.setVisible(true);
    metodos.drawMap(posX, posY,inicioPista,finalPista);
    labelMapa=metodos.getJLabelMap();

    messageLabel = new JLabel("Hello World, Hello World, Hello World");
    messageLabel.setBackground(Color.red);
    messageLabel.setOpaque(true);
    messageLabel.setSize(50,20);
    messageLabel.setLocation(210,270);
    messageLabel.setVisible(true);
    
    layeredPane = new JLayeredPane();
    layeredPane.setPreferredSize(new Dimension(300, 310));
    layeredPane.add(messageLabel, new Integer(2));
    layeredPane.add(labelMapa, new Integer(1));

    scrollImage.setViewportView(layeredPane);
    add(scrollImage);
  }

Spo que só estah aparecendo o layer onde eu tô escrevendo helloWorld. O labelMapa não aparece… O que eu estou fazendo de errado?

Criado 7 de outubro de 2010
Respostas 0
Participantes 1