[Duvida] ações com action e listener

Boa Noite sou novato em java e estou criando minha primeira GUI o problema é o seguinte eu tenho q criar um programa onde o usuario digita quantas fotos ele quer registrar devolvendo na tela a quantidade de cada foto P,M ou G seu custo e lucro, isso em interface

pois bem, fiz o codigo mas passar isso pra interface nao esta dando certo primeiro a minha classe onde esta a interface nao esta aceitando o action na linha 102 esta dizendo que o objeto quantidadeg
"cannot be resolved to a variable" o que eu quero é que meu metodo adicionaG seja utilizado nesse campo, segue o meu codigo abaixo da interface e do codigo do programa, outra duvida que eu tenho é como que eu chamo os metodos da classe fotos para a interface, procurei videos em youtube, google, livros e tudo esta muito abstrato pra mim ref a interface, agradeço quem me ajudar, Obrigado.

import java.awt.*;

import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
	


	public class Interface extends JFrame implements ActionListener  {
		
		
		Interface(){
			JTextField quantidadep;
			JTextField quantidadem;
			JTextField quantidadeg;
			JTextField quantidadeResultado;
			
			JButton botaop;
			JButton botaom;
			JButton botaog;
			JButton botaoResultado;
			
			
			
			
			setTitle("Gerenciador de Fotos");
			setSize(640,480);
			setResizable(false);
			
			//Setando as Escritas
			JLabel tamanhop = new JLabel("Tamanho: ");
			JLabel letrap = new JLabel("P");
			JLabel letram = new JLabel("M");
			JLabel letrag = new JLabel("G");
			
			
			//Campo para digitar quantidade de Fotos
			quantidadep = new JTextField();
			quantidadem = new JTextField();
			quantidadeg = new JTextField();
			
			quantidadeResultado = new JTextField();
			
			// os Botoes OK
			botaop = new JButton("OK");
			botaom = new JButton ("OK");
			botaog = new JButton ("OK");
			botaoResultado = new JButton ("Resultado: ");
			
			
			
			//setando nullo o Layout
			getContentPane().setLayout(null);
			
			//Setando os lugares dos objetos
			quantidadep.setBounds(90, 90,100, 20);
			tamanhop.setBounds(20, 20, 80, 50);
			letrap.setBounds(50, 93, 10, 10);
			botaop.setBounds(200, 85, 70, 30);
			
			letram.setBounds(50, 150, 10,10);
			quantidadem.setBounds(90,145,100,20);
			botaom.setBounds(202,138,70,30);
			
			letrag.setBounds(50, 203, 10, 10);
			quantidadeg.setBounds(93, 198, 100, 20);
			botaog.setBounds(204, 192, 70, 30);
			
			botaoResultado.setBounds(400, 250, 150, 30);
			
			quantidadeResultado.setBounds(5, 300,625, 170);
			
			
					
			//Adicionando o Objeto
			getContentPane().add(tamanhop);
			getContentPane().add(quantidadep);
			getContentPane().add(letrap);
			getContentPane().add(botaop);
			getContentPane().add(letram);
			getContentPane().add(quantidadem);
			getContentPane().add(botaom);
			getContentPane().add(letrag);
			getContentPane().add(quantidadeg);
			getContentPane().add(botaog);
			getContentPane().add(botaoResultado);
			getContentPane().add(quantidadeResultado);
			
			quantidadeg.addActionListener(this);
			
			
			
			
			
			
			setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			setVisible(true);
		}
		public void actionPerformed (ActionEvent e){
			  
		if(e.getSource() == quantidadeg)
			
		          
		          
			  
			  
			  
		}
	
					
					
					
					
				
					
			
					  
			
			
			
			
				
		  public static void main(String args[]){
		   Interface add = new Interface();
		   add.show();
		   
		   
		   
		 
		 }
		  
		  
		  
}


// segue o codigo do programa

public class Fotos {
	int quantidadeP = 0;
	int quantidadeM = 0;
	int quantidadeG = 0;
	
	
	
	

	String tamP = "Tamanho P";
	String tamM = "Tamanho M";
	String tamG = "Tamanho G";
	
	public void mostra(){
		// Metodo DO TAMANHO P
		double custo = 1.20 * quantidadeP;
		double lucro = 0.50 + 1.20;
		double lucroTotal = this.quantidadeP  * lucro - custo;
		System.out.println(getTamP() + " Quantidade: " + getQuantidadeP() + " Custo: " + custo + " Lucro: " + lucroTotal);
		
		// metodo DO TAMANHO M
		double custoM = 1.50 * quantidadeM;
		double lucroM = 0.80 + 1.50;
		double lucroTotalM = this.quantidadeM  * lucroM - custoM;
		System.out.println(getTamM() + " Quantidade: " + getQuantidadeM() + " Custo: " + custoM + " Lucro: " + lucroTotalM);
		
		// metodo DO TAMANHO G
		double custoG = 1.80 * quantidadeG;
		double lucroG = 0.90 + 1.80;
		double lucroTotalG = this.quantidadeM  * lucroG - custoG;
		System.out.println(getTamG() + " quantidade: " + getQuantidadeG() + " Custo: " + custoG + " Lucro: " + lucroTotalG);
		}
	

	
	void adicionaP( int quan){
		this.quantidadeP += + quan;
		
		
	}
	public int getQuantidadeM() {
		return quantidadeM;
	}



	public int getQuantidadeG() {
		return quantidadeG;
	}



	void adicionaM( int quan){
		this.quantidadeM += + quan;
		}
	
	
	void adicionaG( int quan){
		this.quantidadeG += + quan;
	}
	
	
	public String getTamP() {
		return tamP;
	}
	public String getTamM() {
		return tamM;
	}
	public String getTamG() {
		return tamG;
	}



	public int getQuantidadeP() {
		return quantidadeP;
	}
	
	
	 
}

Consegui fazer funcionar, mas minha duvida continua sendo ainda como faço para utilizar os metodos adicionaP adicionaM e AdicionaG nos campos TextField d P M e G ???

Obrigado a quem me responder

Simples
Os componentes da sua classe “interface” estão definidos como variáveis locais do construtor da classe. Transforme a variável “quantidadeg” em um atributo de classe, ou melhor utilize uma inner class para tratar o evento ao invés de fazer a sua classe implementar ActionListener, assim:

[code]
quantidadeg.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){

 }

});
[/code]Quanto a chamar os métodos da classe foto na interface, você pode fazer a interface receber a classe fotos como parâmetro no construtor.
acho que este link explica melhor:
http://www.guj.com.br/java/33013-chamar-outra-classe

Espero ter ajudado!

Estava respondendo quando você encontrou a solução, então vamos focar na sua outra duvida.
no Construtor de interface faça assim.

Foto foto = null; //cria um objeto da classe Foto

public Interface(Foto foto){
	this.foto = foto; //através desse objeto pode-se chamar qualquer método publico da classe Foto
}

e na classe Foto instancie a classe Interface e passe a classe foto como parametro. assim:

public Foto(){
        //cria a interface gráfica e passa a classe Foto como parâmetro, através do "this"
	Interface interface = new Interface(this);
}

e agora dentro da classe interface você pode chamar qualquer método publico da classe Foto.Exemplo

foto.getQuantidadeM(); foto.adicionaP(23);

Abraço

Antes de mais nada Obrigado pelas respostas Daniel Girotto.

Tudo ok estou conseguindo puxar os metodos da classe foto mas como que faço para que um JTextFiled faça com que o que eu digito seja adicionado em um dos adiciona da minha classe fotos? e depois ser impresso no jtextfield do resultado ?

segue o que eu mudei do codigo o resto esta igual antes.

// classe Fotos

	Scanner entrada = new Scanner(System.in);

void adicionaP(){
		
		this.quantidadeP += + entrada.nextInt();
		
		
	}
	public int getQuantidadeM() {
		return quantidadeM;
	}



	public int getQuantidadeG() {
		return quantidadeG;
	}



	void adicionaM(){
		this.quantidadeM += + entrada.nextInt();
		}
	
	
	void adicionaG(){
		this.quantidadeG += + entrada.nextInt();
	}
// Vejam que os metodos adiciona estao recebendo agora o que o usuario digitar


//codigo da classe interface

public void actionPerformed (ActionEvent e){
			  
		if(e.getSource() == quantidadep)
		this.foto.adicionaP();
		
		if(e.getSource() == quantidadeResultado)
			this.foto.mostra();

// nesse codigo estou querendo que quando a pessoa digitar algo no quantidadep e apertar enter é para pegar o que a pessoa digitou e jogar para o metodo adicionaP();

e do de baixo é para quando a pessoa dar um enter no campo quantidadeResultado trazer o metodo Mostra da classe fotos, Imprimir o resultado no campo textfield quantidadeResultado 


o que ocorre é que nao imprimi e nao adiciona nada o programa fica trancado alguem sabe como eu posso fazer isso, eu tendo um exemplo de adicionar e imprimir na interface ja esta de bom tamanho Obrigado a quem responder.

no caso pq nao puxa o seguinte codigo


public void actionPerformed (ActionEvent e){
			  
			quantidadeResultado.setAction(this.foto.mostra());
        
		}; 

ja que no codigo eu to pedindo para que o objeto do tipo TextField puxe o que tem no metodo this.foto.mostra() Correto ???

da erro nao puxa nada

testei o metodo com um setText funcionou, mas preciso que esse TextField retorne tudo o q acontece no mostra() alguem pode me ajudar ???

Obrigado

Para que os seus métodos “adiciona()” recebam os valores dos JTextFields você deve alterá los para receber estes valores por parâmetro e não mais pelo Scanner. Ficaria assim:

void adicionaP(int valor){ this.quantidadeP += valor; } E no action você pega o valor dele assim:

[code]public void actionPerformed (ActionEvent e){

    if(e.getSource() == quantidadep){ 
		this.foto.adicionaP(Integer.parseInt(quantidadep.getText()));  
    }  
    if(e.getSource() == quantidadeResultado){ 
       //para que isso funcione o seu método mostra deve retornar um valor(String)
        quantidadeResultado.setText(mostra()); 
   }

}[/code]

Quanto ao seu outro Post, o setAction() está tentando receber uma Action e não um método void. O jeito de resolver isto é exatemente como você falou, utilizar o setText() para imprimir o retorno da classe mostra;

T+

Muito Obrigado Daniel Girotto me salvou funcionou perfeitamente, Obrigado mesmo abraço

Boa Noite Pessoal aproveitando o topico que criei para resolver mais uma duvida

como que faço para dar uma quebra de linha nesse metodo ?

public String mostra(){
		
		
		return getTamP() + " Quantidade: " + getQuantidadeP() + " Lucro: " + lucrop 
		+  getTamM() + " Quantidade: " + getQuantidadeM() + " Lucro: " + lucrom 
		+ getTamG() +" quantidade: " + getQuantidadeG() + " Lucro: " + lucrog ;
		
		
			
	}	

eu coloco /n no meio mas nao aceita

esse mostra retorna na interface grafica dentro de um campo JTextField

agradeço quem ajudar Obrigado.