Re: Need time waster code or something.
duh wrote:
Andrey Kuznetsov wrote:
Here's my code for flashing the button:
<snip>
Please post compilable example (SSCCE)
Andrey
One problem is that the code needs some jpg files for the button colors.
Don't know how I could post those here.
I'll see if I can just change the background color somehow.
Ok, I got rid of the jpgs, but the button only has one "pressed" color
(light grey), no matter what I define it as. Probably getting
overridden by the internal button press code. But, this should compile.
Any help appreciated. I've been wrangling with this for two weeks, I
have no idea where to go with this, and the text book and the teacher
are not helping.
//Main app file
import javax.swing.*;
class SimonApp
{
public static void main(String[] args)
{
// pull up form
JFrame frame = new SimonFrame();
frame.setVisible(true);
}
}
/////////////////////////////////////////////////////////////////////
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.Thread;
import java.awt.Color;
class SimonFrame extends JFrame
{
public SimonFrame()
{
setTitle("Simon");
setSize(600, 400);
centerWindow(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new SimonContentPane();
this.add(panel);
}
public void centerWindow(Window w)
{
Toolkit tk = Toolkit.getDefaultToolkit();
Dimension d = tk.getScreenSize();
setLocation((d.width - w.getWidth())/2, (d.height - w.getHeight())/2);
}
}
class SimonContentPane extends JPanel implements ActionListener
{
private JButton runButton;
private JButton exitButton;
private JButton validateButton;
private int[] answers = new int[4];
private int counter;
private ColorButtonPanel blueButton, redButton, greenButton, yellowButton;
public SimonContentPane()
{
int[] generated = new int[4];
/* add parameters for button number, and size of answer array */
blueButton = new ColorButtonPanel(new java.awt.Color(0, 0, 255), new
java.awt.Color(0,0,128), 0);
this.add(blueButton);
redButton = new ColorButtonPanel(new java.awt.Color(255,0,0), new
java.awt.Color(128,0,0), 1);
this.add(redButton);
greenButton = new ColorButtonPanel(new java.awt.Color(0, 255,0), new
java.awt.Color(0, 128,0), 2);
this.add(greenButton);
yellowButton = new ColorButtonPanel(new java.awt.Color(0,255,255), new
java.awt.Color(0, 128, 128), 3);
this.add(yellowButton);
runButton = new JButton("NEW GAME");
runButton.addActionListener(this);
this.add(runButton);
validateButton = new JButton("CHECK ANSWERS");
validateButton.addActionListener(this);
this.add(validateButton);
exitButton = new JButton("EXIT");
exitButton.addActionListener(this);
this.add(exitButton);
}
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
if (source == exitButton)
{
System.exit(0);
}
else if (source == runButton)
{
// reset values and counter
blueButton.resetGame();
blueButton.flashButton();
try
{
Thread.sleep(250);
}
catch (InterruptedException ie) {}
redButton.flashButton();
greenButton.flashButton();
yellowButton.flashButton();
}
else if (source == validateButton)
{
//check answers against generated values
}
}
}
///////////////////////////////////////////////////////////////////
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
import java.awt.Toolkit;
import java.awt.Color;
//import java.lang.Thread;
class ColorButtonPanel extends JPanel implements MouseListener
{
private static int[] answers = new int[4];
private static int counter;
private int buttonValue;
private JButton button;
private Color onColor, offColor;
private JTextField textField;
public ColorButtonPanel(Color offColor, Color onColor, int buttonValue)
{
this.onColor = onColor;
this.offColor = offColor;
//display panel
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
//onIcon = new ImageIcon(onColorFile);
//offIcon = new ImageIcon(offColorFile);
this.buttonValue = buttonValue;
button = new JButton(" \n\n\n\n\n\n\n\n");
button.setBackground(offColor);
//button.setSize(20,20);
button.addMouseListener(this);
buttonPanel.add(button);
counter = -1;
//add panels to main panel
this.setLayout(new BorderLayout());
this.add(buttonPanel, BorderLayout.SOUTH);
}
public int getAnswers(int slot)
{
return answers[slot];
}
public int getCounter()
{
return counter;
}
public void resetGame()
{
counter = -1;
answers[0] = -1;
answers[1] = -1;
answers[2] = -1;
answers[3] = -1;
}
//public javax.swing.Icon getOnIcon()
//{
// return onIcon;
//}
//public javax.swing.Icon getOffIcon()
//{
// return offIcon;
//}
public void flashButton()
{
buttonFlash bf = new buttonFlash();
//bf.run();
}
/*class buttonFlash extends Thread
{
public void run()
{
button.setIcon(onIcon);
try
{
Thread.sleep(250);
button.setIcon(offIcon);
}
catch (InterruptedException e) {}
}
}*/
public class buttonFlash
{
Toolkit toolkit;
Timer timer;
//public buttonFlash()
class RemindTask extends TimerTask
{
public void run()
{
button.setBackground(onColor);
//System.exit(0); //Stops the AWT thread
//(and everything else).
}
}
}
public void mouseExited(MouseEvent e)
{}
public void mouseEntered(MouseEvent e)
{}
public void mousePressed(MouseEvent e)
{
button.setBackground(onColor);
}
public void mouseReleased(MouseEvent e)
{
button.setBackground(offColor);
counter++;
try
{
answers[counter] = buttonValue;
}
catch (ArrayIndexOutOfBoundsException aob)
{
System.out.println("Too many button presses");
}
}
public void mouseClicked(MouseEvent e)
{}
}
--
-------------------------
"Work like no one is watching,
Dance like you've never been hurt, and
Love like you don't need the money"
\
=8{B
\