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?