I was given this homework assignment by my professor to implement two buttons and control a fan. I am very new to GUI's and I have not the slightest clue how to call upon my timer in order to increment it using timer.setDelay();
Any help would be greatly appreciated. My code is below:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Fan extends JFrame implements ActionListener{
JButton speedup;
JButton slowdown;
JPanel testPanel = new MyPanel();//trying to inherit properties of MyPanel
public Fan() {
add(testPanel);
GridLayout f = new GridLayout(1,2);
setLayout(f);
JButton speedup = new JButton("Speed Up");
speedup.addActionListener(this);
add(speedup);
JButton slowdown = new JButton("Slow Down");
slowdown.addActionListener(this);
add(slowdown);
}
/* public void actionPerformed(ActionEvent event){
int delay;
String cmd = event.getActionCommand();
if(cmd == "Speed Up" ){
delay = testPanel.getTimer().getDelay();
delay++;
testPanel.getTimer().setDelay(delay);
}
else{
delay = testPanel.getTimer().getDelay();
delay--;
testPanel.getTimer().setDelay(delay);
*/
//My attempt at getting timer to work commented out
}
public class MyPanel extends JPanel {
private static final long serialVersionUID = 1L;
public Timer timer = new Timer(10, new TimerListener());
private int alpha = 0; //angle
public Timer getTimer(){
return timer; //getter method for timer
}
public MyPanel() {
timer.start();
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
alpha = alpha + 1;
int xc = getWidth()/2;
int yc = getHeight()/2;
int rad = (int)(Math.min(getWidth(), getHeight())*0.4);
int x = xc - rad;
int y = yc - rad;
g.fillArc(x, y, 2*rad, 2*rad, 0+alpha, 30);
g.fillArc(x, y, 2*rad, 2*rad, 90+alpha, 30);
g.fillArc(x, y, 2*rad, 2*rad, 180+alpha, 30);
g.fillArc(x, y, 2*rad, 2*rad, 270+alpha, 30);
}
class TimerListener implements ActionListener {
public void actionPerformed(ActionEvent e){
repaint();
}
}
public static void main(String[] args) {
JFrame fan = new Fan();
fan.setSize(700, 700);
fan.setLocationRelativeTo(null);
fan.setDefaultCloseOperation(EXIT_ON_CLOSE);
fan.setTitle("Spinning Fan");
fan.setVisible(true);
}
}