0

我进行测试以查看我的电话号码是否是之后的列表之一,如果未在此屏幕标签中打印“错误号码!”,我想在 gui 屏幕标签中显示带有此消息“Connexion establed”的消息。所以我编写了代码,但我没有做错的地方。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;


public class Accueil extends JFrame implements ActionListener{
    JPanel panneau = new JPanel();
    JPanel clavier, pannAffichage, pannAppelRacc, pannDureeTarif;
    String [] tab = {"1", "2", "3","4","5","6","7","8","9","0"};
    JButton [] btn_chiffre = new JButton[tab.length];
    ListenForButton lfb = new ListenForButton();
    JButton appel, raccrocher;
    Boolean trouve = false;
    boolean first=true; 
    long tempsDebut, tempsFin;
    float tempsecoule;
    JLabel affichage, duree, tarif;
    //déclaration de variables propres aux fichiers
    String[] tabNumero = null;
    String filename = "fichiers/numero.txt";
    ArrayList<String> list = new ArrayList<String>();
    FileInputStream fichier;
    DataInputStream fic;
    static BufferedReader tampon;
    List<String> numExpresso, numTigo,numOrange;
    //constructeur de la classe pour l'initialisation
    Accueil(){   
        setTitle("Phone Call");
        setSize(400,350);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        setResizable(false);
        setVisible(true);
        setContentPane(panneau);
        Fenetre();
    }

    private void Fenetre() {
        //Construction de l'écran d'affichage des numéros composés
        affichage = new JLabel("0");
        affichage.setHorizontalAlignment(JLabel.RIGHT);
        affichage.setPreferredSize(new Dimension(255,30));
        affichage.setOpaque(true);
        affichage.setBackground(Color.white);
        affichage.setFont(new Font("Cambria Math", Font.BOLD, 20));
        affichage.setVisible(true);
        //définition d'un panneau pour le clavier du téléphone
        clavier = new JPanel();
        clavier.setPreferredSize(new Dimension(200,200));
        //panneau pour l'affichage de l'écran
        pannAffichage = new JPanel();
        pannAffichage.setPreferredSize(new Dimension(260,40));
        pannAffichage.setBackground(Color.WHITE);
        //création des boutons chiffres
        for(int i = 0; i < tab.length; i++ ){
            btn_chiffre[i] = new JButton(tab[i]);
            btn_chiffre[i].addActionListener(new ListenForButton());
            btn_chiffre[i].setPreferredSize(new Dimension(50,40));
            clavier.add(btn_chiffre[i]);
        }
        //Panneau pour les boutons Appel et Raccrocher
        //Bouton Appel
        appel = new JButton();
        appel.setPreferredSize(new Dimension(150,40));
        appel.setText("Appel");
        appel.setBackground(Color.GREEN);
        appel.setFont(new Font("Arial", Font.BOLD,16));
        appel.addActionListener(this);
        appel.setVisible(true);
        //bouton Raccrocher
        raccrocher = new JButton();
        raccrocher.setPreferredSize(new Dimension(150,40));
        raccrocher.setText("Raccrocher");
        raccrocher.setBackground(Color.red);
        raccrocher.setFont(new Font("Arial", Font.BOLD,16));
        raccrocher.addActionListener(this);
        raccrocher.setVisible(true);
        pannAppelRacc = new JPanel();
        pannAppelRacc.setPreferredSize(new Dimension(350,50));
        //pannAppelRacc.setBackground(Color.CYAN);

        //Panneau pour l'affichage de la duréé de la communication et du tarif
        pannDureeTarif = new JPanel();
        pannDureeTarif.setPreferredSize(new Dimension(150,95));
        //labels Duree et Tarif
        //label durée pour afficher la durée de la communication
        duree = new JLabel();
        duree.setBackground(Color.WHITE);
        duree.setPreferredSize(new Dimension(100,30));
        duree.setOpaque(true);
        duree.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        duree.setFont(new Font("Courier New",Font.BOLD,14));
        //label tarif pour afficher le coût de la communication
        tarif = new JLabel();
        tarif.setBackground(Color.WHITE);
        tarif.setPreferredSize(new Dimension(100,30));
        tarif.setOpaque(true);
        tarif.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        tarif.setFont(new Font("Courier New",Font.BOLD,14));

        //affichage des panneaux ecran, durée, tarif, bouton appel et bouton raccrocher
        pannAffichage.add(affichage);
        pannAffichage.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        pannAppelRacc.add(appel);
        pannAppelRacc.add(raccrocher);
        pannDureeTarif.setBorder(BorderFactory.createLineBorder(Color.BLACK));
        pannDureeTarif.setBorder(BorderFactory.createTitledBorder("Coût et durée"));
        pannDureeTarif.add(duree);
        pannDureeTarif.add(tarif);
        //pannAffichage.setBorder(BorderFactory.createTitledBorder("LCD"));
        panneau.add(pannAffichage, BorderLayout.NORTH);
        panneau.add(clavier, BorderLayout.EAST);
        panneau.add(pannDureeTarif,  BorderLayout.WEST);
        panneau.add(pannAppelRacc, BorderLayout.SOUTH);

    }
    private class ListenForButton implements ActionListener { // listener 

        public void actionPerformed(ActionEvent e) {

            if(first){
                affichage.setText(e.getActionCommand());
                first = false;
            }
            else{ 
                affichage.setText(affichage.getText() + e.getActionCommand());
            }
        }
    } //fin class ListenForButton 
    // méthode pour charger notre fichier
    BufferedReader ChargerFichier(){
        try {
            fichier = new FileInputStream(filename);
        } catch (FileNotFoundException e) {

            e.printStackTrace();
        }
        fic = new DataInputStream(fichier);
        tampon = new BufferedReader(new InputStreamReader(fic));
        return tampon;
    }
    //methode pour ajouter les éléments du fichier à notre arraylist 
    private Iterable<String> extraireNumero(BufferedReader tampon) throws IOException
    {
        String ligne; 
        while ((ligne = tampon.readLine()) != null) 
        { 
            ligne = ligne.trim(); 
            if ((ligne.length()!=0))  
            { 
                list.add(ligne);
            } 
        }
        return list;
    }
    @Override
    public void actionPerformed(ActionEvent e){
        try {
            extraireNumero(tampon);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        if(e.getActionCommand().equals("Appel")){
            if (affichage.getText().length() == 9){
                    for(int i = 0; i < list.size(); i++){
                        if(list.get(i).equals(affichage.getText())){
                            affichage.setText("Connexion établie !");
                        }
                        else {
                            affichage.setText("Mauvais numéro !");
                        }
                    }
                }   
            else {
                if((affichage.getText().length() < 9) || (affichage.getText().length() > 9)){
                    System.out.print("Mauvais numéro!");
                    duree.setText("");
                    tarif.setText("");
                }

            }
            tempsDebut = System.currentTimeMillis();
            duree.setText("");
            tarif.setText("");
        }
            //if we click in the button "Raccrocher"
        if (e.getActionCommand().equals("Raccrocher")){
            affichage.setText("");
            tempsFin = System.currentTimeMillis();
            //System.out.println(tempsFin);
            tempsecoule = (tempsFin - tempsDebut)/1000F;
            String a = Float.toString(tempsecoule);
            duree.setText(a+"seconds");
            tarif.setText(tempsecoule*1.5+"francs CFA");
            //System.out.println(tempsecoule*1.5+" francs CFA");
        }
    }
    public static void main(String[] args) throws Exception{
        Accueil ac = new Accueil();
        ac.setVisible(true);


    }
}
4

1 回答 1

0

for loop应该是这样的:

boolean flag = false;
for(int i = 0; i < list.size(); i++)
{
    if(list.get(i).equals(affichage.getText()))
    {
        affichage.setText("Connexion établie !");
        flag = true;
        break;
    }
}
if (!flag)
{
    affichage.setText("Mauvais numéro !");
}

编辑
并在您的actionPerformed方法更改中:

extraireNumero(tampon);

extraireNumero(ChargerFichier());
于 2013-05-16T17:21:19.840 回答