Problema com Java

4 respostas
E

Bom dia

Estou fazendo um trabalho de em java para entregar na faculdade onde o professos pediu para que cada aluno fizesse um programa em java que exibisse dois botões um como o nome de inserir e outro com o nome de retirar, conforme eu pressiono o botão inserir aumenta um retâgulo na minha pilha e conforme eu pressiono o botão retirar reduz um retângulo, porém estou encontrando dificuldade em fazer exibir e desaparecer os retâgulos conforme o código abaixo. O programa abaixo consiste em uma primeira classe onde eu crio o frame e nesse frame eu já crio a pilha, porém estou com dificuldades de implementar dentro da classe retangulo o método actionPerformed, pois dentro dele eu criei um contador que controla o topo e o inicio da pilha e conforme eu insiro ele é incrementado em 1 e conforme eu retiro ele é decrementado de 1, ele seria o meu controle para que quando eu retirasse um retângulo da pilha eu testava o valor dele e removia por exemplo um retâgulo, na verdade eu preciso fazer com que quando eu pressionar o inserir se por exemplo o meu contador = 1 então eu crio um outro retângulo sobre o primeiro retângulo de outra cor e assim sucessivamente mas não consigo criar o retâgulo em cima do já criado e tambám não tenho ideia alguem poria me ajudar?

package aa5511;

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.*;
class Painel extends JPanel

{

Painel()

{

repaint ();

}
public void paintComponent (Graphics g)

{

super.paintComponent(g);

Color cor;
cor = Color.BLACK;

g.setColor(cor);                               
g.fillRect(380,530,50,25);    
g.fillRect(380,504,50,25);    
g.fillRect(380,478,50,25);    
g.fillRect(380,452,50,25);    
g.fillRect(380,426,50,25);    
g.fillRect(380,400,50,25);    
g.fillRect(380,374,50,25);    
g.fillRect(380,348,50,25);    
g.fillRect(380,322,50,25);    
g.fillRect(380,296,50,25);

}
}

public class Retangulo implements ActionListener

{

Button inserir;

Button retirar;

int contador;

Painel pilha = new Painel();

Painel movimentos = new Painel();

public void init()

{

inserir = new Button("Inserir"); inserir.addActionListener(this);

retirar = new Button("Retirar"); retirar.addActionListener(this);

JFrame framepilha = new JFrame("Retangulo");

movimentos.add(inserir);

movimentos.add(retirar);

framepilha.getContentPane().add(pilha);

framepilha.getContentPane().add(movimentos, "East");

framepilha.setSize(800,600);

framepilha.setVisible(true);

}
public static void main (String[] a)

{

Retangulo x;

x = new Retangulo();

x.init();

}
public void actionPerformed (ActionEvent ae)

{

Color cor;

//Graphics g;

Object obj = ae.getSource();

if  (obj  instanceof  Button)

{

Button b = (Button) obj;

if (b == inserir)

{

if (contador < 10)

{

contador = contador + 1;

System.out.print(contador);
if (contador == 1)
            {
              //g.setColor(cor);
              //g.fillRect(380,530,50,25);    /*retângulo 01*/                                      
            }   
            if (contador == 2)
            {
                
            }
            if (contador == 3)
            {
                
            }
            if (contador == 4)
            {
                
            }
            if (contador == 5)
            {
                
            }
            if (contador == 7)
            {
                
            }
            if (contador == 8)
            {
                
            }
            if (contador == 9)
            {
                
            }
            if (contador == 10)
            {
                
            }
            
          }  
          else System.out.print("Excedeu o espaço da pilha");
        }
        
        else if (b == retirar) 
        {
           if (contador &gt; 0)
           {    
            contador = contador - 1;
            System.out.print(contador);
            if (contador == 1)
            {
              //g.setColor(cor1);
              //g.fillRect(380,530,50,25);    /*retângulo 01*/                                      
            }   
            if (contador == 2)
            {
                
            }
            if (contador == 3)
            {
                
            }
            if (contador == 4)
            {
                
            }
            if (contador == 5)
            {
                
            }
            if (contador == 7)
            {
                
            }
            if (contador == 8)
            {
                
            }
            if (contador == 9)
            {
                
            }
            if (contador == 10)
            {
                
            }
           }
           else System.out.print("A pilha está vazia");
        }                       
     }//if(obj instanceof Button)
   }//actionPerformed

}

4 Respostas

Raffrel
<blockquote>ederluca2008 wrote:

if (contador == 1)

{

<a href="//g.setColor">//g.setColor</a>(cor);

<a href="//g.fillRect">//g.fillRect</a>(380,530,50,25); /<em>retângulo 01</em>/

}

if (contador == 2)

{
}

if (contador == 3)

{
}

if (contador == 4)

{
}

if (contador == 5)

{
}

if (contador == 7)

{
}

if (contador ==

{
}

if (contador == 9)

{
}

if (contador == 10)

{

}

pq não substitui todos os if’s por um for onde ele faz a verificação ± assim:

for(int i = 0;i<10;i++){ if ( contador == i ) { }
Acredito que isso já ajudee seu codigo a ficar mais livre para conseguir entender.

E

obrigado pela dica, na verdade fiz aquela estrtura sem pensar no desempenho vc tem alguma ideia de como eu poderia esta fazendo para imprimir um novo retangulo sobre um retângulo já inserido afim de que eu consiga simular a movimentação da minha pilha?

ViniGodoy

Talvez fosse uma boa começar criando uma pilha. Se seu professor deixar, use para isso a classe List, da Collections Framework. Se ele não deixar, veja esse link:
http://www.guj.com.br/posts/list/55235.java

Agora, o que não dá é para deixar os comandos de desenho diretamente no código, como vc fez. Você vai precisar usar a classe Rectangle2D, fazer uma lista ou pilha de retângulos e, na hora de desenhar, percorrer essa lista chamado o draw para cada retângulo dentro dela.

Para criar um objeto do tipo Rectangle2D, use esse construtor esquisito:

//Cria um retângulo na posicão 10, 10 com tamanho de 50x70 Rectangle2D rect = new Rectangle2D.Float(10,10,50,70);

rafaeldiego

Seguindo a dica do vinigodoy aí você chega la!

outras dicas são:
quando for postar um código, coloque-o entre as tags [ code ] e [ /code ] (sem espaço)…
procure ser mais claro na definição dos tópicos. problema com java nao ajuda muito. Sendo mais específico é melhor até para você, pois o pessoal vai sacar de cara qual é o assunto e entrar mais pra ajudar.

no mais, procure sobre as dicas do proprio forum…

abraço

Criado 9 de outubro de 2008
Ultima resposta 9 de out. de 2008
Respostas 4
Participantes 4