我在Java中創建了一個(2nd)定時器,但不是在創建Timer時添加了參數(int,action),而是試圖初始化一個actionlistener中的Timer。 原因是在actionlistener中創建了int [在timers arguement]中。在Java中使用ActionListener調用定時器
當我這樣做,但定時器無法找到。
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.border.Border;
public class mainGui extends JFrame {
public mainGui()
{
final ActionListener timerActionEvent = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Start a task here
Timer myTimer2 = (Timer)evt.getSource();
//myTimer2.stop();
BluetoothScan(myTimer2);
}
};
final ActionListener timerDurationActionEvent = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
//Create a method to stop both timers at the bottom of this class
Timer myTimer3 = (Timer)evt.getSource();
StopTimers(myTimer3);
}
};
final Timer timerDuration;
final Timer myTimer = new Timer(5000, timerActionEvent);
/*
* Start All ActionListeners // ItemListeners
*/
ActionListener btnScanAction = new ActionListener() {
//Action listener for reading data from db
public void actionPerformed(ActionEvent e) {
int roomID = 0;
int lecturer = 0;
int unit;
int roomIDIndex;
int lectIDIndex;
int yearIDIndex;
int unitIDIndex;
String[] roomArray;
String[] lecturerArray;
String[] unitArray = null;
int durationIndex;
String DURATION;
int durationInt;
//System.out.println(unitArray.length);
durationIndex = durCB.getSelectedIndex();
DURATION = itemDuration[durationIndex];
durationInt = Integer.parseInt(DURATION);
//User Selected Duration converted to Milliseconds
int durationMilliSec = (int)(durationInt * 60000);
ArrayList<String[]> unitYear = null;
//Store the index ID of the JComboBox Selections
roomIDIndex = roomCB.getSelectedIndex();
lectIDIndex = lectCB.getSelectedIndex();
unitIDIndex = unitCB.getSelectedIndex();
yearIDIndex = yearCB.getSelectedIndex();
switch(yearIDIndex)
{
case 1:
unitYear = Units1;
break;
case 2:
unitYear = Units2;
break;
case 3:
unitYear = Units3;
break;
case 4:
unitYear = UnitsMasters;
break;
}
//Get the Array contents at index location
roomArray = rooms.get(roomIDIndex);
lecturerArray = Lecturers.get(lectIDIndex);
unitArray = unitYear.get(unitIDIndex);
if(unitArray == null) {
System.out.println("Please select a unit");
System.exit(0);
}
roomID = Integer.parseInt(roomArray[0]);
lecturer = Integer.parseInt(lecturerArray[0]);
unit = Integer.parseInt(unitArray[0]);
populateComboBoxes pcb = new populateComboBoxes();
pcb.LabSessionInfo(roomID, lecturer, unit);
myTimer.start();
//HERE IS MY PROBLEM
timerDuration(durationMilliSec, timerDurationActionEvent).start();
}
};
}
public void BluetoothScan(Timer myTimer) {
BluetoothDeviceDiscovery scan = new BluetoothDeviceDiscovery();
try {
myTimer.stop();
scan.main();
} catch(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myTimer.start();
};
public void StopTimers(Timer timerDuration) {
timerDuration.stop();
//myTimer.stop();
}
}
問題在於在btnScanAction ActionListener的底部創建定時器timerDuration(durationMilliSec,timerDurationActionEvent)。開始()時;
其無法在ActionListener中看到創建的Timer的問題。有誰知道一個可能的方法,仍然保持timerDuration(durationMilliSec,timerDurationActionEvent).start();在ActionListener中?
非常感謝球員
你不需要'stmt.close(); conn.close();''中try'。 finally塊總是執行。 – oliholz 2011-05-20 14:05:46
您是否必須向我們展示無數代碼行,而不是試圖開發顯示問題的短片段? – jfpoilpret 2011-05-20 14:33:42