I am newbie in java. I am facing problem now. My purpose is to put the time in textfield. I need press "Start" button and then the time will start go. But after i compile this code. It got error. I have no idea to do it. Can anybody help me? Thanks everyone!!
I:\PlayScene.java:108: cannot find symbol
symbol: variable buttonPlay
buttonPlay.setText(Play);
^
I:\PlayScene.java:111: cannot find symbol
symbol: variable buttonPlay
buttonPlay.setText(Pause);
^
I:\PlayScene.java:103: cannot find symbol
symbol : variable buttonPlay
location: class PlayScene
buttonPlay.addActionListener(new ActionListener() {
^
3 errors
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Timer.*;
import java.util.*;
import javax.swing.Timer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.concurrent.TimeUnit;
public class PlayScene extends JFrame implements ActionListener{
//declaration for time
private static final String Play = "Play";
private static final String Pause = "Pause";
private Timer timer = new javax.swing.Timer(100, this);
private long initTime = System.currentTimeMillis();
private long startTime;
private long pauseTime;
private boolean isRunning;
public void start() {
if (isRunning == false) {
startTime = System.currentTimeMillis();
} else {
startTime = System.currentTimeMillis() - (pauseTime - startTime);
}
isRunning = true;
timer.start();
}
public void pause() {
pauseTime = System.currentTimeMillis();
timer.stop();
}
private String getCurrentTime(long time) {
return myFormat(time);
}
private String myFormat(final long time) {
final long hr = TimeUnit.MILLISECONDS.toHours(time);
final long min = TimeUnit.MILLISECONDS.toMinutes(time
- TimeUnit.HOURS.toMillis(hr));
final long sec = TimeUnit.MILLISECONDS.toSeconds(time
- TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min));
final long ms = TimeUnit.MILLISECONDS.toMillis(time
- TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min)
- TimeUnit.SECONDS.toMillis(sec));
return String.format("%02d:%02d:%02d.%01d", hr, min, sec, ms/100);
}
public PlayScene(){
super("Memory Game");
setBounds(300,40,800,600);
final JButton buttonPlay = new JButton(Play);
//create label
JLabel labelTimer = new JLabel("Timer");
JTextField text2 = new JTextField(15);
text2.setEnabled(false);
text2.setText(getCurrentTime(System.currentTimeMillis() - initTime));
//Labels for upper
JLabel up = new JLabel();
//JLabel space = new JLabel("\n");
//Label for left
JLabel left = new JLabel();
JLabel space1 = new JLabel(" ");
//Label for right
JLabel right = new JLabel();
JLabel space2 = new JLabel(" ");
//create up panel
final JPanel upPanel = new JPanel(new FlowLayout());
upPanel.add(labelTimer);
upPanel.add(text2);
JPanel bottomPanel = new JPanel(new FlowLayout());
bottomPanel.add(buttonPlay);
JPanel leftPanel = new JPanel(new FlowLayout());
leftPanel.add(space1);
JPanel rightPanel = new JPanel(new FlowLayout());
rightPanel.add(space2);
add(upPanel,BorderLayout.NORTH);
add(bottomPanel,BorderLayout.SOUTH);
add(leftPanel, BorderLayout.WEST);
add(rightPanel,BorderLayout.EAST);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
buttonPlay.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (Pause.equals(cmd)) {
pause();
buttonPlay.setText(Play);
} else {
buttonPlay.setText(Pause);
start();
}
}
});
}
public static void main(String[] args) {
JFrame frame = new PlayScene();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
The scope of buttonPlay
is limited to the length of the PlayScene
constructor, and is not accessible in the other methods because of that. To solve it, make it a class attribute.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With