Foros del Web » Programación para mayores de 30 ;) » Java »

Java - acceder a metodo

Estas en el tema de Java - acceder a metodo en el foro de Java en Foros del Web. Hola, tengo un gran problema, espero que a alguien le haya pasado y lo haya podido arreglar.Va No se si es un gran problema: el ...
  #1 (permalink)  
Antiguo 01/03/2009, 01:38
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 8 meses
Puntos: 1
Java - acceder a metodo

Hola, tengo un gran problema, espero que a alguien le haya pasado y lo haya podido arreglar.Va No se si es un gran problema:
el tema es asi, tengo dos clases, formulario y ManejadorBotones
esta ultima es el manejador de los eventos de los botones del Formilario, el tema es que en la clase ManejadorBotones cuando quiero preguntar por quien es el source del evento me dice "Cannot make a static reference to the non-static method getBotonArriba() from the type Formulario"

porque no puedo acceder? si esta como publico en la clase formlario, el codigo es este


Código:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Formulario  extends JFrame{
	private JPanel panelC;
	private JButton botonArriba;
	public JButton getBotonArriba(){
		return this.botonArriba;
	}
	public void setBotonArriba(JButton unBoton){
		this.botonArriba=unBoton; 
	}
	
	public void setPanelC(JPanel panelC) {
		this.panelC = panelC;
	}
	public JPanel getPanelC() {
		return panelC;
	}
	public Formulario() {
		setLayout(null);
		setSize(400,400);
		JButton unBoton = new JButton();
		unBoton.setText("Arriba");
		unBoton.setSize(100, 100);
		this.setBotonArriba(unBoton);
		
		JPanel unPanel =new JPanel();
		unPanel.setSize(100,100);
		unPanel.setBackground(new Color(255,0,0));
		this.setPanelC(unPanel);
		
		this.getPanelC().add(unBoton);
		
		
		this.getContentPane().add(this.getPanelC());
		
		
	
	}
	
	
	
}





import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JOptionPane;

import Ejercicio1Practica1C.Main;


class manejadorBotones implements MouseListener {	 	
	 public void mouseClicked (MouseEvent arg0)
	   {
		//"ERORR AQUIIIIIIII"
                  if ( arg0.getSource() == Formulario.getBotonArriba()){
			 JOptionPane.showMessageDialog(null,"entro");
	   }
	   }
 
		 public void mouseEntered (MouseEvent arg0)
	   {
		}

	public void mouseReleased (MouseEvent arg0)
	   {
		}
	public void mouseExited (MouseEvent arg0)
	   {
		}
	public void mousePressed (MouseEvent arg0)
	   {
		}
	
 }
Bueno espero me auden, hace dos dias que estoy con este problema
Graciasssss
  #2 (permalink)  
Antiguo 01/03/2009, 03:13
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Java - acceder a metodo

No se trata de que esté como público. Si lees el mensaje de error, verás que lo dice bastante claro:

"No puedes acceder de forma estática al método que no es estático getBotonArriba()".

Tienes que crear un objeto de tipo Formulario para luego utilizarlo.
  #3 (permalink)  
Antiguo 01/03/2009, 10:52
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Java - acceder a metodo

HOla, gracias por responder , no entiendo si
public void mouseClicked es un metodo publico

y getBotonArriba tambien es publico, la instancia de formulario se la tendria que pasar por parametro?? como hago eso? no hay nada estatico.
si tendria que creaar una instancia como se la paso por parametro?
no caso una
graciasss
  #4 (permalink)  
Antiguo 01/03/2009, 11:34
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Java - acceder a metodo

A verr, vamos por partes. ¿Sabes lo que es un método estático?
  #5 (permalink)  
Antiguo 01/03/2009, 11:44
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Java - acceder a metodo

HOla, si se lo q es un metodo statcio, es un metodo de clase, se lo q es public, private etc etc
hice una materia en la facultad, objetos, pero usabamos smalltalk

la cuestion es que si yo a un boton le agrego esa clase, ManejadorBotones que implementa MouseListener, osea usa todo lo de esa clase, ahora quiero saber quien apreto el boton, porque segun el boton hago una accion diferente.

ManejadorBotones mane1 = new ManejadorBotones();
unBotonArriba.addMouseListener(mane1);
unBotonAbajo.addMouseListener(mane1);

ahora::: si el formulario tiene un metodo que me da la instancia de el boton, getBotonArriba()
no entiendo porque desde la clase ManejadorBotones no lo puedo tomar, y asi preguntar

if ( arg0.getSource() == Formulario.getBotonArriba()){

se entiende

Bien lo que yo hice que el la clase Formulario que exstiende de JFrame
tiene dos variables private BotonArriba, private Boton Abajo
estos no son de clase, son de instancia (no tienen static)

pregunto, estos botones deberian ser de instancia o de clase??

yo creo que tienen que ser de instancia porque supongamos que tengo 2 objetos Formulario es como que usarian los dos el mismo boton se entiende?

bueno espero puedas ayudarme porque no puedo avanzar ni dos pasos, graciasss
  #6 (permalink)  
Antiguo 01/03/2009, 15:50
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Java - acceder a metodo

Bien, y si sabes lo que es un método estático, y sabes que los botones pertenecen a una instancia, ¿por qué intentas ejecutar getBotonArriba() sobre la clase Formulario en lugar de sobre una instancia de la clase Formulario?

Es que es eso lo que estás haciendo y exactamente lo que dice el mensaje de error. Te está diciendo:

"Hola, estás intentando ejecutar Formulario.getBotonArriba() como si getBotonArriba() fuera un método estático, pero no lo es. getBotonArriba() no es un método estático, así que no lo puedes llamar como si fuera un método estático de la clase Formulario."
  #7 (permalink)  
Antiguo 01/03/2009, 16:18
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Java - acceder a metodo

AAAAAAAAAAAAAa
claro, tenes razon, estoy mandando un mensaje a la clase no a la instancia, tenes razon, entonces el tema es
-como hago para en la clase ManajedorBotones preguntar que boton fue en el que se clicke, se entiende??
osea

class manejadorBotones implements MouseListener {
public void mouseClicked (MouseEvent arg0)
{
if ( arg0.getSource() == Formulario.getBotonArriba()){
JOptionPane.showMessageDialog(null,"entro");
}
}

es como que tendria que pasarle al creador de la instancia ManejadorBotones, la instabcia del Frame, se entiende? algo asi

JButton unBoton = new JButton();
unBoton.setText("Arriba");
ManejadorBotones mane1 = new ManejadorBotones(this);
unBoton.addMouseListener( mane1);

ahora en la clase private class manejadorEventos implements MouseListener {

se puede crear el constructor aca?
manejadorEventos(elFrame)

bueno esperp hayas entendido, gracias de nuevoooo
  #8 (permalink)  
Antiguo 01/03/2009, 17:18
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Java - acceder a metodo

Creo que lo que necesitas es leer un buen tutorial de Swing, porque, por el código que pones, estás creando un JFrame por un lado, un MouseListener por otro pero no hay ninguna relación en absoluto entre ellos.

Aquí puedes encontrar gran parte de los tutoriales oficiales de Sun en español. Aquí, por ejemplo, tienes el tutorial de Swing.
  #9 (permalink)  
Antiguo 01/03/2009, 17:28
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Java - acceder a metodo

Hola, por que decis q no tiene nada que ver??

los objetos, en este caso Boton, tienen un Listener, que yo lo creo
el ManejadorEventos
y se lo agrego al boton
entonces el boton va a tener ese Listener, se entiede?
claro, osea el boton tiene un objeto que es un MouseListener

claro que no tienen que ver, pero no tiene por que, osea un objeto tiene a otro

se entiende??

gracias, a ver que hay en ese enlacee
  #10 (permalink)  
Antiguo 02/03/2009, 02:48
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Java - acceder a metodo

Es que eso es lo que no veo en tu código. No hay ningún sitio donde le asignes a los botones ningún MouseListener para manejar los eventos. No hay ningún unBoton.setMouseListener(new manejadorBotones()); ni nada similar.

De verdad, no te lo digo para molestar, pero creo que sería conveniente que miraras algunos ejemplos o tutoriales.
  #11 (permalink)  
Antiguo 03/03/2009, 11:41
Usuario no validado
 
Fecha de Ingreso: agosto-2007
Mensajes: 141
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: Java - acceder a metodo

claro, la clase ManejadorBotones no la puse, pero implementa MouseListener

BUano al final lo solucine, tube que pasarle el panel completo por parametro

graciasssssss
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:26.