2016-02-27 69 views
0

即時通訊計時器監聽器類中出現錯誤,我希望如果有人能夠看一看,並解釋它有什麼問題。我在添加數字+ 1時遇到錯誤。此外,它似乎停止按鈕不工作。計時器監聽器類號錯誤

public class Main 
{ 

/** 
* @param args the command line arguments 
*/ 
public static void main(String[] args) 
{ 
    JFrame frame = new JFrame("Odometer Program"); 
    frame.setLayout(new FlowLayout()); 
    // Creates Frame and a array of textfields 
    JTextField[] tf1 = new JTextField[3]; 
    JPanel northPanel = new JPanel(); 

    for (int i = 0; i < tf1.length; i++) // adds texfields to frame 
    { 
     tf1[i] = new JTextField(1); 
     northPanel.add(tf1[i]); 
    } 
    JButton DriveButton = new JButton(" Drive Car"); 
    JButton StopButton = new JButton("Stop Car"); 
    JPanel SouthPanel = new JPanel(); 
    SouthPanel.add(DriveButton); 
    SouthPanel.add(StopButton); 

    frame.add(northPanel, BorderLayout.NORTH); 
    frame.add(SouthPanel, BorderLayout.SOUTH); 
    frame.pack(); // sets default seize and width to the frame 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

    // Create the timer 
    ActionListener timerListener = new TimerListener(tf1); 
    Timer timer = new Timer(100, timerListener);// 100 for tenth of a second 
    timer.start(); 

    // create Action Listener for two buttons 
    ActionListener buttonListener = new DrivecarStopcarListener(timer); 
    DriveButton.addActionListener(buttonListener); 
    StopButton.addActionListener(buttonListener); 
    StopButton.setActionCommand("Stop Car"); 
    DriveButton.setActionCommand("Drive Car"); 
    } 

} 

class TimerListener implements ActionListener 

{

private int[] numbers; // array of numbers 
private JTextField[] textFields; 

TimerListener(JTextField[] tf1) // copy position into constructor 
{ 
    // copy array to text fields 
    textFields = tf1; 

    // new int to create integers, the same size of text fields 
    numbers = new int[textFields.length]; 

    for (int pos = 0; pos < numbers.length; pos++) // 
    { 
     textFields[pos].setText(String.valueOf(numbers[pos])); 
     numbers + 1; 
    } 

} 

@Override 
public void actionPerformed(ActionEvent ae) 
{ 
    for (int pos = 0; pos < numbers.length; pos++) 
    { 
     textFields[pos].setText(String.valueOf(numbers[pos])); 
     numbers + 1; 
    } 

} 
} 

class DrivecarStopcarListener implements ActionListener 
{ 

private Timer myTimer; 

DrivecarStopcarListener(Timer t) 
{ 
    myTimer = t; 
} 

@Override 
public void actionPerformed(ActionEvent ae) 
{ 
    String action = ae.getActionCommand(); 
    switch (action) 
    { 
     case "Drive car": 
      myTimer.start(); 
      break; 
     case "Stop car": 
      myTimer.stop(); 
      break; 
     } 
} 
} 
+1

你有什麼錯誤? –

+0

如果將這2行更改爲'numbers + = 1;',它會起作用嗎? –

回答

0

在你的代碼在這裏:

你被1遞增的數字,但它並沒有使用任何東西。此外,數字是一個in [],這是非法增加。我相信你打算增加數組中元素的值。

而且,你永遠不會設置任何值號碼[],那麼所有元素默認爲0 假設你正試圖增加在數量上的每個元素的值,你首先需要設置的數字:

  numbers[pos] = pos; //? not sure what value you want here 
      textFields[pos].setText(String.valueOf(numbers[pos])); 
+0

感謝您回覆我,即時嘗試添加1到每十分之一秒,如果它會讓我更容易,我可以我的代碼的其餘部分。 – Metalheadmonkey

+0

你可以使用顯示數字應該如何填充的代碼更新你的問題。或者爲我澄清..你是否試圖在每個文本字段中顯示從0到texfield總數的值,其中每個文本字段將顯示下一個更高的1/10秒?如果是這樣的話,那麼你只需用我的代碼替換你的2行代碼。如果沒有,請向我展示更多可用的代碼。 – pczeus

+0

對不起,我的代碼的其餘部分。我正在試圖在里程錶的每一秒中加1。 – Metalheadmonkey