2013-02-17 1 views
1

Le programme lit dans un fichier de données et stocke le contenu dans un vecteur. Il affiche ensuite chaque élément dans un champ de texte lorsque l'utilisateur clique sur les boutons suivant et précédent. Je veux désactiver previousButton lors de l'affichage du premier élément et désactiver nextButton lors de l'affichage du dernier.Tentative de désactivation de JButtons le cas échéant

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(); 
     } 

} 

Répondre

1

Essayez de mettre à jour l'état des boutons après avoir modifié la position actuelle

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); 
} 
Questions connexes