2015-08-16 3 views
0

Я создаю свое первое приложение GUI. У меня есть класс называется User и у меня есть экземпляр этого класса под названием NEWUSER и я создал и инициализировать его в newGameController.java (User newUser = new User(username);, но я хотел бы использовать его в mainScreenController как хорошо, но я получаю ошибку cannot resolve symbol 'newUser'не может решить символ 'newUser'

Я не «Я действительно понимаю, как работает MVC, и я считаю, что у меня есть главный недостаток дизайна, может кто-нибудь помочь мне в том, как сделать это, чтобы я мог использовать один объект в двух контроллерах или альтернативах? Вот мой код ниже.

User.java

package sample.model; 

public class User { 
    private String name; 
    private double money; 
    public User(String name) { 
     this.name = name; 
     money = 20000; 
    } 
    public String getName() { 
     return name; 
    } 
} 

newGameController.java

package sample; 

import javafx.event.ActionEvent; 
import javafx.fxml.FXML; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.scene.control.Button; 
import javafx.scene.control.Label; 
import javafx.scene.control.TextField; 
import javafx.scene.text.Text; 
import javafx.stage.Stage; 
import sample.model.User; 

import java.io.IOException; 


public class newGameController { 

    @FXML 
    private Label mainmessage; 
    @FXML 
    private TextField userid; 
    @FXML 
    private Button submit; 

    @FXML 
    private void handleButtonAction(ActionEvent event) throws IOException { 
     try { 
      Stage stage; 
      Parent root; 
      String username = userid.getText(); 
      User newUser = new User(username); 

      stage = (Stage) submit.getScene().getWindow(); 
      root = FXMLLoader.load(getClass().getResource("mainscreen.fxml")); 
      Scene scene = new Scene(root); 
      stage.setScene(scene); 
      stage.show(); 

     } 
     catch(NullPointerException e) 
     { 

     } 

    } 

mainscreenController.java

package sample; 


import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.control.Label; 

import java.net.URL; 
import java.util.ResourceBundle; 

public class mainscreenController implements Initializable { 
    @FXML 
    private Label name; 

    @Override 
    public void initialize(URL url, ResourceBundle rb) { 
     name.setText(newUser.getName()); 
    } 

} 

ответ

0

В вас mainscreenController класс: -

name.setText(newUser.getName()); 

В приведенной выше строке вы ссылаетесь на newUser, но этот класс не знает тип newUser. Поскольку вы не объявили эту переменную в этом классе.

Добавьте оператор import sample.model.User вверху и определите тип объекта newUser.
Связь объекта newUser, инициализированного в контроллере, и используемого mainscreenController не выглядит связанным друг с другом.

Даже если вы объявите тип newUser в mainscreenController, то есть User newUser;, он выкинет исключение NullPointerException. Поскольку я не вижу, чтобы это инициализировалось в mainscreenController.

+0

Я вижу, как я могу связать два, когда два контроллера не связаны? – user1666375

+0

Смотрите это сообщение: http://stackoverflow.com/questions/27965401/passing-parameters-between-two-javafx-controllers. –

Смежные вопросы