Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Build a JavaFX Application Build a Pomodoro App Properties and Bindings

cannot resolve symbol timerText ???

cannot resolve symbol timerText ???

2 Answers

Hi Araz,

That means Java doesn't now what timerText is so it has not been declared. Can you paste your code into here and we'll get that sorted for you.

Steve.

Hello Steve!

package com.teamtreehouse.pomodoro.controllers;

import com.teamtreehouse.pomodoro.model.Attempt;
import com.teamtreehouse.pomodoro.model.AttemptKind;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;

/**
 * Created by arazg on 2017-03-10.
 */
public class Home {

    @FXML
    private VBox container;

    @FXML
    private Label title;

    private Attempt mCurrentAttempt;
    private StringProperty mTimerText;

    public Home(){
        mTimerText = new SimpleStringProperty();
        setmTimerText("Hammer");
    }

    public String getmTimerText() {
        return mTimerText.get();
    }

    public StringProperty mTimerTextProperty() {
        return mTimerText;
    }

    public void setmTimerText(String mTimerText) {
        this.mTimerText.set(mTimerText);
    }


    private void prepareAttempt(AttemptKind kind){
        clearAttemptStyle();
        mCurrentAttempt = new Attempt(kind,"" );
        addAttemptStyle(kind);
        title.setText(kind.getDisplayName());
    }

    private void addAttemptStyle(AttemptKind kind) {
        container.getStyleClass().add(kind.toString().toLowerCase());
    }

    private void clearAttemptStyle() {
        for (AttemptKind kind : AttemptKind.values()) {
            container.getStyleClass().remove(kind.toString().toLowerCase());
             }
        }
        public void DEBUG(ActionEvent actionEvent){
            System.out.println("HI MOM");

        }
    }

[MOD: edited code block - srh]

fx.xml
<?import javafx.scene.control.*?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.SVGPath?>
<VBox stylesheets="/css/main.css"
      xmlns="http://javafx.com/javafx/8"
      xmlns:fx="http://javafx.com/fxml"
      fx:controller="com.teamtreehouse.pomodoro.controllers.Home"
      fx:id="container">
    <children>
        <Button fx:id="DEBUG" onAction ="#DEBUG">DEBUG</Button>
        <Label fx:id="title" text="Pomodoro"/>

        <Label fx:id="time" text="${controller.mTimerText}"/>

        <HBox styleClass="buttons">
            <children>
                <StackPane>
                    <children>
                        <StackPane styleClass="nested-action,play">
                            <children>
                                <HBox styleClass="svg-container">
                                    <SVGPath styleClass="svg"
                                             content="M1.6 17C1 17 0 16.2 0 15.6V1.3C0 .1 2.2-.4 3.1.4l8.2 6.4c.5.4.8 1 .8 1.7 0 .6-.3 1.2-.8 1.7l-8.2 6.4c-.5.2-1 .4-1.5.4z"/>
                                </HBox>
                                <Button text="Resume"/>
                            </children>
                        </StackPane>

                        <StackPane styleClass="nested-action,pause">
                            <children>
                                <HBox styleClass="svg-container">
                                    <SVGPath styleClass="svg"
                                             content="M10.2 17c-1 0-1.8-.8-1.8-1.8V1.8c0-1 .8-1.8 1.8-1.8S12 .8 12 1.8v13.4c0 1-.8 1.8-1.8 1.8z" />
                                    <SVGPath styleClass="svg"
                                             content="M10.2 17c-1 0-1.8-.8-1.8-1.8V1.8c0-1 .8-1.8 1.8-1.8S12 .8 12 1.8v13.4c0 1-.8 1.8-1.8 1.8z" />
                                </HBox>
                                <Button text="Pause"/>
                            </children>
                        </StackPane>
                    </children>
                </StackPane>

                <StackPane styleClass="nested-action,restart">
                    <children>
                        <HBox styleClass="svg-container">
                            <SVGPath styleClass="svg"
                                     content="M21 2.9C19.1 1 16.6 0 13.9 0c-1.1 0-2 .9-2 1.9s.9 1.9 2 1.9c1.7 0 3.2.6 4.4 1.8 2.4 2.4 2.4 6.3 0 8.7-1.2 1.2-2.7 1.8-4.4 1.8-1.7 0-3.2-.6-4.4-1.8-1.8-1.8-2.3-4.4-1.4-6.7L9.3 10c.2.4.5.7.9.8.4.1.8.1 1.2-.1.8-.4 1.1-1.3.8-2.1L10 4.3c0-.5-.2-1-.6-1.4l-.1-.1-.1-.2c-.2-.4-.5-.7-.9-.8-.4-.1-.8-.1-1.2.1L.9 4.8C.1 5.2-.2 6.1.2 6.9c.2.4.5.7.9.8.4.1.8.1 1.2-.1l2-.9c-1.2 3.5-.4 7.6 2.4 10.4C8.6 19 11.2 20 13.9 20s5.3-1 7.2-2.9C25 13.2 25 6.8 21 2.9z"/>
                        </HBox>
                        <Button text="Restart"/>
                    </children>
                </StackPane>
            </children>
        </HBox>

I just changed

from:

        public void setmTimerText(String TimerText) {
            mTimerText.set(TimerText);
        }

to:

        public void setmTimerText(String mTimerText) {
            this.mTimerText.set(mTimerText);
        }

Then the cannot resolve symbol timerText disappeared but still i cant see the hammer text when running the program!

Jordan Powell
PLUS
Jordan Powell
Courses Plus Student 5,410 Points

You have to remove the 'm' from your setter and getter in the variable name. you have this: public void setmTimerText(String mTimerText) { this.mTimerText.set(mTimerText); } you need this: public void setTimerText(String mTimerText) { this.mTimerText.set(mTimerText); }