无法从getter / setter类获取设置值

时间:2016-01-21 10:16:58

标签: java javafx

我的getter / setter类如下:

package cage;

public class hashtaggs {
private String a;
public String getHashtag()
{
    return a;
}
public void setHashTag(String hashtag)
{
    this.a=hashtag;
    System.out.println(a);
}
}

此类中使用了get方法

public class SaMain extends Application 
{
    public static void main(String []args) throws IOException 
    {
        launch(args);
        hashtaggs h=new hashtaggs();
        String xh=h.getHashtag();
        System.out.println(xh);
    @Override
    public void start(Stage primaryStage) {
        primaryStage.setTitle("Just a program");
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(25, 25, 25, 25));
        Text scenetitle = new Text("Choose Your Input Method");
        scenetitle.setFont(Font.font("Tahoma", FontWeight.NORMAL, 15));
        grid.add(scenetitle,1,0,3,1);
        Button tbtn = new Button();
        tbtn.setText(" Click here for input 1");
        tbtn.setOnAction(new EventHandler<ActionEvent>() 
        {
            @Override
            public void handle(ActionEvent event) 
            {
                try 
                {
                    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Input1.fxml"));
                    Parent root1 = (Parent) fxmlLoader.load();
                    Stage stage = new Stage();
                    stage.setScene(new Scene(root1, 640, 480));  
                    stage.show();
                    ((Node)(event.getSource())).getScene().getWindow().hide();
                } 
                catch(Exception e) 
                {
                    e.printStackTrace();
                }           
            }
        });
        Button sbtn = new Button();
        sbtn.setText(" Click here to input 2");
        sbtn.setOnAction(new EventHandler<ActionEvent>() 
        {
            @Override
            public void handle(ActionEvent event) 
            {
                try 
                {
                    FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("Input2.fxml"));
                    Parent root1 = (Parent) fxmlLoader.load();
                    Stage stage = new Stage();
                    stage.setScene(new Scene(root1,640,480));  
                    stage.show();
                } 
                catch(Exception e) 
                {
                    e.printStackTrace();
                }           
            }
        });
        StackPane troot = new StackPane();
        troot.getChildren().add(tbtn);
        StackPane sroot = new StackPane();
        sroot.getChildren().add(sbtn);
        grid.add(troot, 1, 4,3,1);
        grid.add(sroot, 1, 5,3,1);
        Scene scene = new Scene(grid, 640, 480);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

System.out.println(a)打印字符串,但是当我使用getHashtag()时,我无法获得返回为null的字符串的值。我从javafx ui条目的控制器获取字符串值。我在使用get方法之前使用了launch(args);。可能是什么问题?

2 个答案:

答案 0 :(得分:2)

您没有设置值。你直接使用 getter

    hashtaggs h=new hashtaggs();
    h.setHashtag(parameter);
    String xh=h.getHashtag();

始终记住您需要先使用 setter 设置值,然后才能使用 getter 访问它。

如需更多信息,请阅读:http://www.tutorialspoint.com/java/java_encapsulation.htm

答案 1 :(得分:1)

setHashTag方法中,您传递string variable并将其设置为a。并在此方法中打印此值。

如果您希望按getHashtag()获取值,则必须首先初始化对象意味着首先必须调用setHashTag方法和调用getHashtag()

此代码可以使用:

hashtaggs h=new hashtaggs();
h.setHashTag("string value");
String xh = h.getHashtag();
System.out.println(xh);
  

注意:作为命名约定,类名应以大写字母开头   字母并且是一个名词,例如字符串,颜色

希望这有助于你。