使用Getter Setter JAVA从其他类访问变量

问题描述 投票:0回答:1

我在多个类上使用getter和setter访问变量时遇到问题。我抬头看this one,但我太困惑了。

我有3个类型的用户:[mysql表中的Admin (Position No: 0),Manager (Position No: 1)Clerk (Position No:2)

我有SeeReportsAndFeedbacks类。我想显示所有报告,方法是选择position_no = 0的行,其中1代表管理员和经理,2代表职员。 if语句已经完成。

所以店员只能看到带有position_no=2的报告管理员只能看到带有position_no=0和1的报告管理员只能看到带有position_no=0和1

的报告

请帮助我。我在这里呆了很长时间。我的getter设置程序有什么问题?

如果我在Login_Form上设置,然后调用get在girisyap()函数中显示正确,但是如果我在名为SeeReportsAndFeedbacks的其他类中调用get,它将显示Users () constructor中的第一个初始值,而不是girisyap()上的设置值Login_Form上的功能。

[tip值将来自mysql db的position_no作为字符串,new1值正在将if语句解析(转换)为int字符串

screenshot

GIST

用户类别


    public class Users {

    private  int id;
    private String username;
    private String fullname;
    private String password;
    private String phone;
    private String gender;
    private byte[] image;
    private  int position_no;

public Users () {
    setPno(1); //firsst initialize
    //getFullname();
}
public Users (int uid ,String uname, String fname, String upassword, String uphone, String ugender, byte[] uimage, int pno){

this.id = uid;
this.username = uname;
this.fullname = fname;
this.password = upassword;
this.phone = uphone;
this.gender =ugender;
this.image =uimage;
this.position_no = pno;
}
public Users (int pno){

setPno(pno);
}

public int getPno(){        
    return position_no;
    }
public void setPno(int pno){
this.position_no = pno;       
    }}

SeeReportsAndFeedbacks类(我针对该问题删除了不相关的函子或一些其他gui东西。

public class SeeReportsAndFeedbacks { // extends javax.swing.JFrame

    //CLIENT client = new CLIENT();
    int new1 = 9999; //testing something
    int PositionNoGetiren;
    //sers loginf = new Users(0, null,null,null,null,null,null,new1);


    public SeeReportsAndFeedbacks() {
        //initComponents();

        Users loginf = new Users();

        PositionNoGetiren = loginf.getPno(); //gets initial value instead of set value on login_form
        System.out.println("Babakingg " + PositionNoGetiren);

        //int ananas = loginf.getPno();

        //fillFeedbackJTable(jTable2);


    }

        public void fillReportJTable(){//JTable table

        //loginf.setPno(2); it works if i manually set but it's useless
      //System.out.println("Loginfvalue in see reports: " + loginf.getPno() + loginf.getUsername());
        //new1 = loginf.getPno(); //not works shows 0

        //see.getNo();

        new1=PositionNoGetiren;

        String selectQuery = "SELECT * FROM `users` WHERE `position_no` = ?";


        if(new1==0){//admin

            selectQuery = "SELECT * FROM `reports`";

        }
        if(new1==1){//manager

            selectQuery = "SELECT * FROM `reports` WHERE `position_no` = 1";

        }
        if(new1==2){//clerk
            selectQuery = "SELECT * FROM `reports` WHERE `position_no` = 2";
        }
        //}


    }}

登录表单

public class Login_Form {

    int positionNoGetiren;

    /**
     * Creates new form Login_Form
     */
    public Login_Form() {

        //initComponents();

        //positionNoGetiren = 9999;

    }

    private void girisyap() {                                                


                //I DELETED ALL DATABASE RELATED THINGS FOR QUESTION.
                //String tip = rs.getString("position_no"); //DETECTS CORRECTLY POSITION NO FROM DATABASE
                String tip = "IT'S rs.getString(\"position_no\")"; //for posting question
                System.out.println(tip);
                int new1 = Integer.parseInt(tip);

                //Users loginf = new Users(new1); //welcome yazisi icin
                Users loginf = new Users(); //ONLY WORKS IN THIS CLASS.

                loginf.setPno(new1); //set user type for reports class BUT IT'S NOT WORKING
                System.out.println("Loginf degeri login_formdaki: " + loginf.getPno());

                //THIS IF IS WORKING CORRECTLY.

                if(new1==0){ 

                //Admin form = new Admin();
                //form.setVisible(true);
                //form.pack();
                //form.setLocationRelativeTo(null);
              //  form.setExtendedState(JFrame.MAXIMIZED_BOTH);

                }
                if(new1==1){

                //Manager form = new Manager();
                //form.setVisible(true);
                //form.pack();
                //form.setLocationRelativeTo(null);

                }
                if(new1==2){

                //Clerk form = new Clerk();
                //form.setVisible(true);
                //form.pack();
                //form.setLocationRelativeTo(null);
               // form.setExtendedState(JFrame.MAXIMIZED_BOTH);
                }

                //this.dispose();




        }

    private void jButton_LoginActionPerformed(java.awt.event.ActionEvent evt) {                                              
        girisyap();} 

    }
java getter-setter setter getter
1个回答
0
投票

您的获取器和设置器没有任何问题。

这很可能是解析TIP的值的问题,无法解析为INT,也许是浮点数,其值很奇怪,例如2.00000004,或者仅仅是null。尝试编写测试或记录查询返回的值,并检查这是否是您要查找的值。

© www.soinside.com 2019 - 2024. All rights reserved.