Visibilidad de métodos en clases

Hola de nuevo.
Estoy intentando acceder a un método de una clase, pero da siempre error porque no lo reconoce. Lo que quiero hacer es lo siguiente.
Clase1:
      - Crea una clase "pausa" que abre a pantalla completa un interface.
            Pausa pausa = new Pausa();
       - Dentro de constructor de Clase 1 quiero hacer que pausa sea visible o no. "HazteVisible(true);"
Dentro de pausa he creado una método "HazteVisible()":
public void hazteVisible(boolean visible){
this.setVisible(visible);
}
La clase Pausa la he creado dentro de la clase Clase1 para que no haya problemas.
He probado también hacer que "Pausa" sea una implementación de otra clase iPausa, donde tengo definido el método hazteVisible, pero ni aun así me funciona.
¿Sabes cuál es el problema?.
Respuesta
1
Yo creo que con el código que te pongo tiene que funcionar:
Pausa pausa = new Pausa();
pausa.hazteVisible(true);
Si no lo hace, pásame el código que le eche un vistazo.
Te paso el trozo de código que uso.
Lo he modificado como me dices. En vez de crear la instancia de Pausa en el constructor, lo he hecho directamente en run():
//*****************************************************
class EscuchaPHP implements Runnable {
int PausaIniciado=0;
......
public EscuchaPHP(final VisibilidadControlable Top){ //Constructor
this.Top = Top;
}
public void run() {
..............................
else if (codigo.compareTo("7")==0) { if (PausaIniciado==0) { Pausa pausa = new Pausa(); PausaIniciado=1; }
pausa.hazteVisible(true);
}
else if (codigo.compareTo("8")==0) { pausa.hazteVisible(false); }
...
}
//********************************************************
class Pausa extends JFrame{
final Image image = new ImageIcon("banner1.jpg").getImage();
public Pausa(){ //Constructor
Container contentpane = getContentPane();
//Creo un objeto de tipo JPanel
JPanel panel = new JPanel(){
public void paint(Graphics g)
{
int w = getWidth();
int h = getHeight();
int imageW = image.getWidth(this);
int imageH = image.getHeight(this);
int x = (w - imageW)/2;
int y = (h - imageH)/2;
g.drawImage(image, x, y, this);
super.paint(g);
}
};
panel.setLayout(null);
panel.setOpaque(false);
contentpane.add(panel);
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width,screenSize.height);
setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
setResizable(false);
setAlwaysOnTop(true);
setLocation(0,0);
// setVisible(true);
}
public void hazteVisible(boolean visible){
this.setVisible(visible);
}
}
}
Creo que no te compila porque no has inicializado correctamente la variable pausa. Si miras el código, verás que sólo defines la variable pausa si PausaIniciado es 0. Sin embargo, intentas hacerla visible tanto si se cumple esa condición como si no. Para solucionar esto tienes varias soluciones:
1) Mete el pausa.setVisible(true); dentro del if.
2) Mete un Pausa pausa = null; al principio del run(), y luego, dentro del if de antes, mete sólo pausa = new Pausa();

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas