我进行测试以查看我的电话号码是否是之后的列表之一,如果未在此屏幕标签中打印“错误号码!”,我想在 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);
}
}