2013-02-17 18 views
1

程序讀入數據文件並將內容存儲到一個向量中。然後,當用戶單擊下一個和上一個按鈕時,它會在文本字段中顯示每個項目。我想在顯示第一項時禁用previousButton,並在顯示最後一項時禁用nextButton。試圖在適當時禁用JButtons

import java.io.*; 
import java.util.Vector; 
import java.util.Scanner; 
import java.awt.*; 
import java.awt.event.*; 
import java.awt.event.ActionListener; 
import javax.swing.*; 

public class choosing_fruit extends JFrame implements ActionListener 
{ 
    private JTextField dataItemTextField; 
    private JButton nextButton, previousButton, closeButton; 
    private Vector<String> v; 
    private int current = 0; // index value of current item shown in text field 
    public static void main(String[] args) throws FileNotFoundException 
    { 
     choosing_fruit f = new choosing_fruit(); 
    } 

    public choosing_fruit() 
    { 
     v = new Vector<String>(); 
     nextButton = new JButton(">>"); 
     previousButton = new JButton("<<"); 
     closeButton = new JButton("Close"); 
     dataItemTextField = new JTextField(20); 
     setLayout(new FlowLayout()); 

     this.add(dataItemTextField); 
     this.add(previousButton); 
     this.add(nextButton); 
     this.add(closeButton); 

     nextButton.addActionListener(this); 
     previousButton.addActionListener(this); 
     closeButton.addActionListener(this); 

     try 
     { 
      Scanner in = new Scanner(new File("fruit.dat")); 
      String inputLine; 
      while(in.hasNextLine()) 
      { 
       inputLine = in.nextLine(); 
       v.add(inputLine); 
      } 

      in.close(); 
     } 
     catch(Exception e)  
     {  
      JOptionPane.showMessageDialog(null,"error");  
     } 

     dataItemTextField.setText(v.get(current)); // show 1st item 

     this.setTitle("Choosing Fruit"); 
     this.pack(); 
     this.setVisible(true); 
    } 
    public void actionPerformed(ActionEvent ae) 
    { 
     if(current > 0) 
     { 
      previousButton.setEnabled(true); 
     } 
     else 
     { 
      previousButton.setEnabled(false); 
     } 
     if(current < 5) 
     { 
      nextButton.setEnabled(true); 
     } 
     else 
     { 
      nextButton.setEnabled(false); 
     } 

     if(ae.getSource() == nextButton) 
     { 
      if(current >= 0) 
      { 
       current = current + 1; 
       dataItemTextField.setText(v.get(current)); 
       System.out.println(current); 
      }   
     } 

     else if(ae.getSource() == previousButton) 
     { 
      if(current <= 5) 
      { 
       current = current - 1; 
       dataItemTextField.setText(v.get(current)); 
       System.out.println(current); 
      } 
     } 
     else if(ae.getSource() == closeButton) 
     { 
      shutDown(); 
     } 

    } 
     private void shutDown()  
     { 
      this.dispose(); 
     } 

} 

回答

1

嘗試更新按鈕的狀態後,你改變當前位置

public void actionPerformed(ActionEvent ae) { 
    if (ae.getSource() == nextButton) { 
     if (current >= 0) { 
      current = current + 1; 
      dataItemTextField.setText(v.get(current)); 
      System.out.println(current); 
     } 
    } else if (ae.getSource() == previousButton) { 
     if (current <= 5) { 
      current = current - 1; 
      dataItemTextField.setText(v.get(current)); 
      System.out.println(current); 
     } 
    } else if (ae.getSource() == closeButton) { 
     shutDown(); 
    } 

    previousButton.setEnabled(current > 0); 
    nextButton.setEnabled(current < v.size() - 1); 
}