Actionlisenter not reacting.
Hi,
I'm making a tool for a game called RuneScape so I can easier manage various things, but I'm having some problems with my action lisenter. Need's to be said that I'm no IT grad, so bear over with obvious mistakes, heh. I can't see what I'm doing wrong here.
Source where the problem is: "compostTracker.java"
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class compostTracker extends JPanel{
private JButton addTracker;
private JLabel[] trackLabel;
private int POSX = 5, POSY = 10, INCREMENT = 20, tracks = 0, LENGTH = 200, HEIGHT = 50;
private JOptionPane trackCaption;
private newTracker[] NT;
private actionHandler actionHandler = new actionHandler();
public compostTracker() {
this.setLayout(null);
JButton addTracker = new JButton("Add new tracker");
addTracker.addActionListener(actionHandler);
addTracker.setBounds(3, 3, 130, 19);
this.add(addTracker);
}
public class newTracker extends Thread {
String caption;
boolean run = true;
int trackNumber;
long startTime = System.currentTimeMillis(), currentTime, timeLeft;
public void run() {
if (caption.length() <= 0)
caption = "Tracker #" + tracks;
try {
while(run == true) {
currentTime = System.currentTimeMillis();
timeLeft = 3600000 - (currentTime - startTime / 1000); // 3600000 = 1 hour
if (timeLeft <= 0) {
run = false;
trackLabel[trackNumber].setText(String.format("Your compost should be ready."));
this.stop();
}
else {
trackLabel[trackNumber].setText(String.format("Seconds left: %d.", timeLeft));
}
this.sleep(999);
}
} catch(InterruptedException ex) {}
}
public class actionHandler implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (e.getSource() == addTracker) {
NT[tracks] = new newTracker();
NT[tracks].caption = trackCaption.showInputDialog("Enter track caption.");
NT[tracks].trackNumber = tracks;
trackLabel[tracks] = new JLabel();
trackLabel[tracks].setBounds(POSX, POSY + INCREMENT, LENGTH, HEIGHT);
add(trackLabel[tracks]);
NT[tracks].start();
tracks++;
POSY += INCREMENT;
}
}
}
}
If you want to compile the program on your own machine, heres the rest of my files to make it work:
"start.java":
Code:
public class start {
public static void main(String[] args) {
engine Engine = new engine();
if (Engine.initGUI() == true) {
//if the GUI starts
}
}
}
"engine.java":
Code:
import java.awt.Component;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTabbedPane;
public class engine {
public JFrame window;
private JTabbedPane tabPanel = new JTabbedPane();
private Component[] tabComponents = {new compostTracker()};
private String[] tabCaptions = {"Compost Tracker"};
public boolean initGUI() {
try {
window = new JFrame("Farm Master X");
for(int i = 0; i <= tabCaptions.length-1; i++) {
tabPanel.addTab(tabCaptions[i], new JScrollPane(tabComponents[i]));
}
window.add(tabPanel);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setSize(500, 450);
window.setVisible(true);
return true;
} catch(Exception ex) {
ex.printStackTrace();
return false;
}
}
}
Thanks in advance.