JLabel

Ola pessoa !!

Estou tentando colcar um JLabel sobre outro,

no meu codigo aprece um circulo laraja fora do “quadro” que crie e gostaria que

aparecesse dentro, porque estou montando um jogo de figuras geometricas.

Obrigado !!!

package jog;

// Importando as bibliotecas necessarias para execução do programa
import java.awt.*;
import java.awt.image.BufferedImage;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class Janela {
	final static boolean shouldFill = true;
	final static boolean shouldWeightX = true;
	final static boolean RIGHT_TO_LEFT = false;

	public static void addComponentsToPane(Container pane) {
		if (RIGHT_TO_LEFT) {
			pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
		}

		JButton button;
		JLabel label;
		JPanel pam;

		pane.setLayout(new GridBagLayout());
		GridBagConstraints comp = new GridBagConstraints();

		label = new JLabel("JOG");
		comp.fill = GridBagConstraints.PAGE_START;
		comp.gridx = 3;
		//comp.gridy = 0;
		pane.add(label, comp);

		label = new JLabel( QUADRO() );
		comp.fill = GridBagConstraints.HORIZONTAL;
		comp.ipady = 0;  // Importancia do label para o programa	
		pane.add(label, comp);
		
		label = new JLabel( CIRCULO() );
		pane.add(label, comp);


		label = new JLabel("TEMPO:");
		comp.fill = GridBagConstraints.HORIZONTAL;
		comp.ipady = 0;       					   // Redefinindo para padrão
		comp.weighty = 0.0;   					   // Solicita espaço extra vertical
		comp.anchor = GridBagConstraints.PAGE_END; // Fundo do espaço
		comp.insets = new Insets(10,0,0,0); 	   // Inserindo espaço em branco
		comp.gridx = 2;       					   // Alinhado com o botão 2
		comp.gridwidth = 2;   					   // 2 colunas de largura
		comp.gridy = 2;       					   // Terceira fila
		pane.add(label, comp);



	}

	//Metodo para criar quadro onde as figuras geometricas serão mostradas	
		private static ImageIcon QUADRO() {   
		int width=600, height=500;  // Tamanho do quadro 
			
		BufferedImage buffer = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB );   
		    
			Graphics g = buffer.createGraphics();   
			
			g.setColor( Color.BLACK );   
			g.fillRect( 0, 0, width, height );   
			
			   
			g.setColor( Color.WHITE);   
			g.fillRect( 2, 2, 596, 496 ); 
			
			return new ImageIcon( buffer );   
		 
	}
		
		private static ImageIcon CIRCULO() {   
							
			BufferedImage buffer = new BufferedImage( 100, 100, BufferedImage.TRANSLUCENT );   
			    
				Graphics g = buffer.createGraphics();   
				
				g.setColor( Color.ORANGE );   
				g.fillOval( 0, 0, 100, 100 );   
				
												
				return new ImageIcon( buffer );   
			 
		}




	private static void createAndShowGUI() {
		//Cria e configura a janela
		JFrame frame = new JFrame("JOG - Jogo da Geometria");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



		//Configura o conteúdo do painel
		addComponentsToPane(frame.getContentPane());

		//Mostra a janela.
		frame.pack();
		frame.setVisible(true);
	}

	public static void main(String[] args) {

		javax.swing.SwingUtilities.invokeLater (new Runnable() 
		{ public void run() 
		{ createAndShowGUI();}
		});

	}
}

Cara,

Me desculpe em ser franco, mas teu jogo não tem futuro.

Quer fazer um jogo, esqueça os objetos swing e trate de desenhar graficamente
aquilo que voce precisa.

Assim vc controla onde coloca cada forma, pode colocar uma sobre a outra.

O que vc fez nesse teu código não vai funcionar. Veja que você está criando um
layout (procure entender que essa palavra quer dizer organizaçao). Daí vc
atribui esse layout a uma painel e acrescenta no painel esses objetos label.

Cada objeto vai sendo “organizado” dentro do layout. Organização é colocar um
do lado do outro, jamais um dentro ou sobre o outro.

Use um Frame e você terá o código mais ou menos assim:

public void paint(Graphics g) {
        desenharTabuleiro(g);
}
    
    public void update(Graphics g){
        paint(g);
    }
    
    
    public void desenharTabuleiro(Graphics g){
        
        int usar = (int)tela.getHeight();
        if (usar > (int)tela.getWidth())
            usar = (int) tela.getWidth();

        usar -= 100;
        int qLarg = usar/9;
        int tLarg = qLarg * 9;

        int x0 = ((int)tela.getWidth()-tLarg)/2;
        int y0 = ((int)tela.getHeight()-tLarg)/2;

        g.setColor( Color.gray );
        g.fillRoundRect( x0, y0, tLarg, tLarg, 30, 30 );
        
        g.setColor(Color.blue);
        g.drawOval(x0 + tLarg + (((int)tela.getWidth()-(x0 + tLarg))/2)-50, y0 + (tLarg/2), 100, 60);
        
        int contaCanto = 0;
        x0 = ((int)tela.getWidth()-tLarg)/2;
        for(int i=0; i<9; i++){
            y0 = ((int)tela.getHeight()-tLarg)/2;
            for(int j=0; j<9; j++){
                if(!(i>0 && i<8 && i!=4 && j>0 && j<8 && j!=4)){
                    g.setColor( Color.black );
                    g.draw3DRect( x0, y0, qLarg, qLarg, true );
                    if((i%8==0) && (j%8==0)){
                        switch (contaCanto){
                            case 0:
                                g.setColor( Color.blue );
                                break;
                            case 1: 
                                g.setColor( Color.green );
                                break;
                            case 2:
                                g.setColor( Color.yellow );
                                break;
                            case 3: 
                                g.setColor( Color.red );
                                break;
                        }
                        g.fill3DRect( x0, y0, qLarg, qLarg, true );
                        contaCanto++;
                    }
                    //Centro preto
                    if((i==4) && (j==4)){
                        g.setColor( Color.black );
                        g.fill3DRect( x0, y0, qLarg, qLarg, true );
                    }                   
                    desenharPeoes(g, visToObj(i, j), x0, y0); 
                }
                y0+=qLarg;
            }
            x0+=qLarg;
        }
    }

Boa sorte, se precisar algo estamos aqui.

To colocando um projeto em anexo.

Descompacte e carregue ele no NetBeans. Rode e vai desenhar um tabuleiro.

Estude e quem sabe isso te ajude a entender como funcionam as partes graficas de jogos.

abs

E ai

JoaoBluSCBR

valeu pela ajuda!

O jogo é um projeto acadêmico voltado para crianças ente 5 e 10 anos

para auxilia las a reconhecer figuras geométricas, e o desfio proposto pelos

professores é faze-lo todo em JAVA sem carrega imagens fora das bibliotecas

nativas da linguagem !!

OBRIGADO !!!

No teu primeiro código, para que os componentes não fiquem um ao lado do outro, você precisa setar o Layout do JFrame para Null layout ou Layout Absoluto. Se você não fizer isso, não consegue que o JLabel fique na posição que vc quer, sempre que vc mudar a posição dele, o JFrame vai reorganizá-lo dentro da Janela conforme o outro layout que estiver.

boa noite muito bom a sua iniciativa.

botão direito na sua area de trabalho
DEFINIR LAYOUT
LAYOUT NULL

bem simpes.l