Note that there are some explanatory texts on larger screens.

plurals
  1. POSwing Timer GUI Nightmare
    primarykey
    data
    text
    <p>Okay so I tried implementing a timer into the dialogue of this program which pauses for a second before moving on to the next bit of dialogue. When I try this out, java spits out errors o' plenty such as: illegal start of expression, ; expected, .class expected, and reached end of file while parsing. How can I implement the timer so the window doesn't freeze when I try to have the dialogue on the screen for a specific amount of time? And don't tell me Thread.sleep() cause I tried that and all it does is freeze the application.</p> <pre><code>import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class RpsNuke extends JFrame implements ActionListener { private final char moves[] = {'R', 'P', 'S', 'N'}; private JRadioButton rock, paper, scissors, nuke; private JTextField display; public RpsNuke() { super("Rock, Paper, Scissors, Nuke"); rock = new JRadioButton(" Rock ", true); paper = new JRadioButton(" Paper "); scissors = new JRadioButton(" Scissors "); nuke = new JRadioButton(" Nuke "); ButtonGroup rpsButtons = new ButtonGroup(); rpsButtons.add(rock); rpsButtons.add(paper); rpsButtons.add(scissors); rpsButtons.add(nuke); JButton go = new JButton(" Go "); go.addActionListener(this); display = new JTextField(25); display.setEditable(false); display.setBackground(Color.yellow); Container c = getContentPane(); c.setLayout(new FlowLayout()); c.add(rock); c.add(paper); c.add(scissors); c.add(nuke); c.add(go); c.add(display); if (nuke.isSelected()){ display.setText("Don't do it man");} else { display.setText("");} } /** * returns -1 if the player wins, * 0 if it's a tie, and 1 if the computer wins */ private int nextPlay(char computerMove, char playerMove) { if ((computerMove == 'R'&amp;&amp;playerMove == 'S')||(computerMove == 'S'&amp;&amp;playerMove=='P')||(computerMove=='P'&amp;&amp;playerMove=='R')){ return 1;} else if ((computerMove == 'R'&amp;&amp;playerMove == 'R')||(computerMove=='S'&amp;&amp;playerMove=='S')||(computerMove=='P'&amp;&amp;playerMove=='P')){ return 0;} else if (playerMove == 'N'){ return 2;} return -1; } public void actionPerformed(ActionEvent evt) { char playerMove, computerMove; playerMove = 0; if (rock.isSelected()){ playerMove = 'R';} else if (paper.isSelected()){ playerMove = 'P';} else if (scissors.isSelected()){ playerMove = 'S';} else if (nuke.isSelected()){ playerMove = 'N';} int k = (int)(Math.random() * 3); computerMove = moves[k]; int result = nextPlay(computerMove, playerMove); String msg = ""; if (result != 2) {msg = " You said " + makeWord(playerMove) + ", I said " + makeWord(computerMove); if (result &lt; 0){ msg += " -- you win.";} else if (result == 0){ msg += " -- tie.";} else if (result &gt; 0){ msg += " -- I win.";} } if (result == 2) { TimerTask tasknew = new TimerScheduleFixedRateDelay(); Timer timer = new Timer(); // scheduling the task at fixed rate delay timer.scheduleAtFixedRate(tasknew,1000,1000); @Override } // this method performs the task public void run() { msg = "It's too late, we're all dead!"; msg = "..."; msg = "Look at what you did, there's nothing left."; msg = "Looks like we have to start over again..."; window.setVisible(false); main(null); } display.setText(msg); } private String makeWord(char move) { String word = ""; switch (move) { case 'R': word = "rock"; break; case 'P': word = "paper"; break; case 'S': word = "scissors"; break; case 'N': word = "nuke"; break; } return word; } public static void main(String[] args) //Here { RpsNuke window = new RpsNuke(); window.setBounds(300, 300, 400, 140); window.setDefaultCloseOperation(EXIT_ON_CLOSE); window.setVisible(true); } } //And here </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload