2016-01-21 123 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