2016-01-21 101 views
-1

我的getter/setter类的设定值如下:无法从一个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()返回为空的字符串的值。我从javafx ui条目的控制器中获取字符串值。在使用get方法之前,我已使用launch(args);。可能是什么问题呢?

+0

通过这个代码不容易理解的问题。您需要更多地解释并发布完整的代码。 –

+1

你确定,你在调用'setHashTag'后调用'getHastTag'? –

+0

请分享代码 – Lathy

回答

1

setHashTag方法你通过string variable并将其设置在a。并在此方法中打印此值。

如果你想获得通过getHashtag()的值,那么你必须先初始化对象意味着首先你要叫setHashTag方法和被叫getHashtag()

此代码将工作:

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

注:按照命名约定,类名应以大写字母开始 信是名词如字符串,颜色

希望这可以帮助你。

+0

setHashTag在'launch(args);'之后执行的javafx UI中调用。是否UI和后台代码在同时导致问题的同时工作? – Rahul

+0

你发布的代码中没有任何地方是所谓的setHashTag。当'launch(...)'方法完成后,它肯定不会在您创建的对象上调用。 –

2

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

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

永远记住,你需要先使用二传手设置的值,那么只有你可以使用吸气访问它。

更多阅读:http://www.tutorialspoint.com/java/java_encapsulation.htm

+0

setHashTag在启动(args);后执行的javafx UI中调用。是否UI和后台代码在同时导致问题的同时工作? – Rahul