Java - Problemas con variables publicas

 
Vista:

Problemas con variables publicas

Publicado por jaime (6 intervenciones) el 02/08/2006 10:39:22
Bueno lo primero de todo, saludar al foro y decir que soy bastante nuevo en esto.

E estado intentando buscar solucion a mi problema pero no encuentro solucion para el mismo. El problema es el siguiente, yo tengo un programa con varias clases y en una de ellas tengo una variable declarada como public, para utilizarla en otra clase, sin embargo cuando voy a hacer uso de esta, me dice: <idientifier> expected, lo que me da a entender q no esta declarada en la clase donde intento usarla.

Parte del codigo es la sgte:

//---------------------------clase donde declaro la variable---------------------------
package proyjava;

import java.awt.*;
import javax.swing.JFrame;
import java.awt.event.*;
import java.sql.*;

public class VLogin extends JFrame {
private Label lblnombre = new Label();
private Label lblpass = new Label();
private TextField txtNombre = new TextField();
private TextField txtPass = new TextField();
private Button cmdcomprobar = new Button();
ResultSet rs ;
int Tipo;
private Button cmdMenUsuario = new Button();
private Button cmdMenTecnico = new Button();
private Button cmdMenAdmin = new Button();
public int i; // ESTA ES LA VARIABLE DE LA QUE HABLO

//---------------------------------------------------------------------------------

package proyjava;

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

public class VMU extends JFrame {
private Button cmdaulas = new Button();
private Label lblexplicativo = new Label();
private Button cmdconsumibles = new Button();
private Button cmdcentros = new Button();

public VMU() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
cmdaulas.setLabel("Aulas");
cmdaulas.setBounds(new Rectangle(129, 54, 123, 30));
this.getContentPane().setLayout(null);
lblexplicativo.setText("Usted esta en el menu de usuario");
lblexplicativo.setBounds(new Rectangle(98, 11, 196, 21));
cmdconsumibles.setLabel("Consumibles");
cmdconsumibles.setBounds(new Rectangle(128, 98, 125, 30));
cmdcentros.setBounds(new Rectangle(128, 143, 125, 30));
cmdcentros.setLabel("Centros");
this.addWindowListener(new java.awt.event.WindowAdapter() {

});
this.getContentPane().add(cmdaulas, null);
this.getContentPane().add(lblexplicativo, null);
this.getContentPane().add(cmdconsumibles, null);
this.getContentPane().add(cmdcentros, null);
}

i=0; // AQUI ES DONDE ME DA EL ERROR

}

Muchas Gracias de antemano, espero respuesta :-).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Problemas con variables publicas

Publicado por chuidiang (950 intervenciones) el 02/08/2006 14:48:38
Hola:

La variable pública pertenece a una clase. Debes crear una intancia de la clase y acceder a través de ella. Deberías hacer algo como esto

VLogin instancia = new VLogin ();
intancia.i = 0;

Si haces varios new de VLogin, tendrás una variable i para cada una de las instancias (de los new). Tenlo en cuenta si quieres usarlo en varios sitios.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con variables publicas

Publicado por jaime (6 intervenciones) el 02/08/2006 15:29:55
Hola chuidiang, e probado lo que me has dicho, pero de esa manera, puedo cargar la variable i desde la clase VMU, sin embargo, a mi lo q me interesa es el valor que pueda coger en la clase VLogin.

Aqui te dejo las dos clases, para q les eches un vistazo, quiza asi komprendas lo que quiero hacer:

//-------------------------------------------------CLASE VLOGIN------------------------------
package proyjava;

import java.awt.*;
import javax.swing.JFrame;
import java.awt.event.*;
import java.sql.*;

public class VLogin extends JFrame {
private Label lblnombre = new Label();
private Label lblpass = new Label();
private TextField txtNombre = new TextField();
private TextField txtPass = new TextField();
private Button cmdcomprobar = new Button();
ResultSet rs ;
int Tipo;
private Button cmdMenUsuario = new Button();
private Button cmdMenTecnico = new Button();
private Button cmdMenAdmin = new Button();
public int i;


public VLogin() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
VLogin vlogin = new VLogin();
vlogin.setBounds(300,100,400,300);
vlogin.show();

}
private void jbInit() throws Exception {
lblnombre.setText("Nombre");
lblnombre.setBounds(new Rectangle(31, 58, 53, 18));
this.getContentPane().setLayout(null);
lblpass.setText("Password");
lblpass.setBounds(new Rectangle(30, 98, 66, 21));
txtNombre.setBounds(new Rectangle(131, 56, 118, 20));
txtPass.setBounds(new Rectangle(131, 96, 118, 20));
cmdcomprobar.setLabel("Login");
cmdcomprobar.setBounds(new Rectangle(132, 167, 109, 30));
cmdcomprobar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
cmdcomprobar_actionPerformed(e);
}
});
cmdMenUsuario.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
cmdMenUsuario_actionPerformed(e);
}
});
cmdMenUsuario.setBounds(new Rectangle(130, 206, 112, 30));
cmdMenUsuario.setLabel("Menu Usuario");
cmdMenUsuario.setVisible(false);
cmdMenTecnico.setLabel("Menu Tecnico");
cmdMenTecnico.setVisible(false);
cmdMenTecnico.setBounds(new Rectangle(131, 209, 112, 30));
cmdMenTecnico.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
cmdMenTecnico_actionPerformed(e);
}
});
cmdMenAdmin.setLabel("Menu Administrador");
cmdMenAdmin.setVisible(false);
cmdMenAdmin.setBounds(new Rectangle(117, 212, 145, 30));
cmdMenAdmin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
cmdMenAdmin_actionPerformed(e);
}
});
this.getContentPane().add(lblnombre, null);
this.getContentPane().add(lblpass, null);
this.getContentPane().add(txtNombre, null);
this.getContentPane().add(txtPass, null);
this.getContentPane().add(cmdcomprobar, null);
this.getContentPane().add(cmdMenUsuario, null);
this.getContentPane().add(cmdMenTecnico, null);
this.getContentPane().add(cmdMenAdmin, null);
}

void cmdcomprobar_actionPerformed(ActionEvent e) {
//Lo primero de todo, es crear un objeto de usuario, xa despues introducirlo en la BD
Usuario u = new Usuario();
u.nombre=txtNombre.getText();
u.Pass=txtPass.getText();
//Seguido creamos un objeto de la BD xa mas tarde establecer una conexión
AccesoBd bd = new AccesoBd();
boolean abierta = bd.abrirConexion("java", "sun.jdbc.odbc.JdbcOdbcDriver");
//Si esta abierta, almaceno el resultado en un resulset
if (abierta){
rs = bd.lanzarSelect("SELECT TIPO FROM USUARIOS WHERE NOMBRE = '"+u.nombre+"' and PASS = '"+u.Pass+"'");
}else{
System.out.println("Error, la base de datos no esta disponible");
}if (rs!=null){
try{
while(rs.next()){
Tipo = rs.getInt("Tipo") ;
System.out.println(Tipo);
//kuanto menor sea el valor del tipo, mayor seran los privilegios
if (Tipo == 2){
System.out.println("Usted solo tiene privilegios de usuario");
//Dependiendo del tipo de usuario q se trate, activo o desactivo los diferentes botones
this.cmdMenUsuario.setVisible(true);
this.cmdMenTecnico.setVisible(false);
this.cmdMenAdmin.setVisible(false);
i=2;
}else if(Tipo == 1){
System.out.println("Usted tiene privilegios de Tecnico");
this.cmdMenUsuario.setVisible(false);
this.cmdMenTecnico.setVisible(true);
this.cmdMenAdmin.setVisible(false);
i=1;
}else{
System.out.println("Usted es Administrador ");
this.cmdMenUsuario.setVisible(false);
this.cmdMenTecnico.setVisible(false);
this.cmdMenAdmin.setVisible(true);
i=0;
}
}//Fin del while
}catch (Exception p){

}
}else{
System.out.println("Resulset vacio!!!");
}
//Estos son los botones adicionales segun el tipo de usuario que acceda
}
void cmdMenUsuario_actionPerformed(ActionEvent e) {
VMU vmu = new VMU();
vmu.setBounds(300,100,400,300);
vmu.show();


}
void cmdMenTecnico_actionPerformed(ActionEvent e) {

}
void cmdMenAdmin_actionPerformed(ActionEvent e) {

}
}

//-------------------CLASE VMU---------------------------------------------

package proyjava;

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

public class VMU extends JFrame {
private Button cmdaulas = new Button();
private Label lblexplicativo = new Label();
private Button cmdconsumibles = new Button();
private Button cmdcentros = new Button();

public VMU() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
cmdaulas.setLabel("Aulas");
cmdaulas.setBounds(new Rectangle(129, 54, 123, 30));
this.getContentPane().setLayout(null);
lblexplicativo.setText("Usted esta en el menu de usuario");
lblexplicativo.setBounds(new Rectangle(98, 11, 196, 21));
cmdconsumibles.setLabel("Consumibles");
cmdconsumibles.setBounds(new Rectangle(128, 98, 125, 30));
cmdcentros.setBounds(new Rectangle(128, 143, 125, 30));
cmdcentros.setLabel("Centros");
this.addWindowListener(new java.awt.event.WindowAdapter() {
public void windowActivated(WindowEvent e) {
this_windowActivated(e);
}

});
this.getContentPane().add(cmdaulas, null);
this.getContentPane().add(lblexplicativo, null);
this.getContentPane().add(cmdconsumibles, null);
this.getContentPane().add(cmdcentros, null);
}

void this_windowActivated(WindowEvent e) {
VLogin vli = new VLogin();
System.out.println(vli.i);

//CUANDO SE ACTIVE LA VENTANA EN FUNCION DEL VALOR QUE HAYA TOMADO i,
//QUE APAREZCAN UNOS BOTONES U OTROS.
}

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con variables publicas

Publicado por jaime (6 intervenciones) el 02/08/2006 16:14:13
Ya e conseguido lo que queria, simplemente me faltaba definir la variable i como statica ademas de como publica.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar