Écrivez un programme pour saisir à l'avance les noms de tous les téléspectateurs dans le tableau, puis obtenez le nombre total d'éléments du tableau, et enfin extrayez aléatoirement les indices des éléments des éléments du tableau, et obtenez les noms des téléspectateurs chanceux en fonction de les indices extraits.
L'idée est la suivante :
Définissez l'événement clé de la zone de saisie et utilisez la fonction getKeyChar() de la classe KeyEvent pour déterminer s'il s'agit d'un caractère de retour chariot. Sinon, il ne sera pas traité ;
Utilisez la fonction isEmpty() pour déterminer s'il y a une chaîne dans la zone de texte. S'il n'y a pas de chaîne, aucun traitement ne sera effectué ;
S'il s'agit d'une entrée légale, ajoutez le nom de la personne saisie et le caractère de retour chariot à la liste du personnel via la méthode append() de la classe JTextArea ;
Utilisez la méthode selectAll() pour sélectionner tous les caractères de la zone de texte ;
Définir la fonction à exécuter lorsque l'on clique sur le bouton « Extraire », obtenir le texte de la liste du personnel via la méthode getText() de la classe JTextArea et le stocker dans une chaîne ;
Créez un tableau de chaînes unidimensionnel, divisez la chaîne précédente en fonction du caractère de retour chariot et stockez-la dans le tableau ;
Générez un index de tableau aléatoire via Math.random() comme indice de tableau du gagnant ;
Définir les informations gagnantes, y compris les paramètres de format ;
Ajoutez des paramètres personnels aux informations gagnantes via la méthode format() de la classe String ;
Utilisez la méthode setText() de la classe JTextArea pour afficher les informations gagnantes dans le champ de texte ;
Définissez la fonction à exécuter lorsque vous cliquez sur le bouton "Quitter" et utilisez la méthode System.exit(0) pour quitter le programme.
Le code est le suivant :
Copiez le code comme suit :
paquet cn.edu.xidian.crytoll ;
importer java.awt.BorderLayout ;
importer java.awt.Color ;
importer java.awt.EventQueue ;
importer java.awt.event.ActionEvent ;
importer java.awt.event.ActionListener ;
importer java.awt.event.KeyAdapter ;
importer java.awt.event.KeyEvent ;
importer javax.swing.JButton ;
importer javax.swing.JFrame ;
importer javax.swing.JPanel ;
importer javax.swing.JScrollPane ;
importer javax.swing.JTextArea ;
importer javax.swing.JTextField ;
importer javax.swing.JLabel ;
importer javax.swing.UIManager ;
importer javax.swing.border.EmptyBorder ;
importer javax.swing.border.TitledBorder ;
classe publique ArrayExample {
cadre JFrame privé ;
JTextField privé textField ;
scrollPane JScrollPane privé ;
JLabel privé label_1 ;
JTextArea textArea = new JTextArea();
privé JTextArea textArea_1 ;
/**
* Lancez l'application.
*/
public static void main (String[] arguments) {
EventQueue.invokeLater(new Runnable() {
public void run() {
essayer {
Fenêtre ArrayExample = new ArrayExample();
window.frame.setVisible(true);
} attraper (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Créez l'application.
*/
public ArrayExample() {
initialiser();
}
/**
* Initialisez le contenu du cadre.
*/
privé vide initialiser() {
frame = new JFrame("Utilisez le tableau pour sélectionner au hasard les spectateurs chanceux");
frame.setBounds(100, 100, 500, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
Étiquette JLabel = nouveau JLabel("/u8F93/u5165/u5728/u573A/u89C2/u4F17/u59D3/u540D/u6309/u56DE/u8F66");
label.setBounds(10, 10, 132, 15);
frame.getContentPane().add(étiquette);
textField = new JTextField();
textField.addKeyListener(nouveau KeyAdapter() {
@Outrepasser
public void keyPressed (KeyEvent e) {
do_textField_keyPressed(e);
}
});
textField.setBounds(10, 35, 132, 21);
frame.getContentPane().add(textField);
textField.setColumns(10);
scrollPane = new JScrollPane();
scrollPane.setBounds(10, 66, 132, 185);
frame.getContentPane().add(scrollPane);
textArea_1 = new JTextArea();
scrollPane.setViewportView(textArea_1);
label_1 = nouveau JLabel("/u9009/u53D6/u89C2/u4F17/u4EBA/u5458/uFF1A");
label_1.setBounds(180, 10, 132, 15);
frame.getContentPane().add(label_1);
textArea.setBounds(180, 34, 214, 217);
frame.getContentPane().add(textArea);
Bouton JButton = nouveau JButton("/u62BD/u53D6");
bouton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_actionPerformed(e);
}
});
bouton.setBounds(404, 187, 70, 23);
frame.getContentPane().add(bouton);
JButton bouton_1 = nouveau JButton("/u9000/u51FA");
bouton_1.addActionListener(nouveau ActionListener() {
public void actionPerformed(ActionEvent e) {
do_button_1_actionPerformed(e);
}
});
bouton_1.setBounds(404, 228, 70, 23);
frame.getContentPane().add(button_1);
}
protected void do_textField_keyPressed(KeyEvent e) {
if (e.getKeyChar() != '/n')// S'il ne s'agit pas d'un caractère de retour chariot, il ne sera pas traité.
retour;
Nom de la chaîne = textField.getText();
if (name.isEmpty())// S'il n'y a pas de chaîne dans la zone de texte, aucun traitement ne sera effectué
retour;
textArea_1.append(name + "/n");//Ajoute le nom saisi et le caractère de retour chariot à la liste des personnes
textField.selectAll();//Sélectionner tous les caractères dans la zone de texte
}
protected void do_button_actionPerformed(ActionEvent e) {
String perstring = textArea_1.getText(); // Récupère le texte de la liste du personnel
String[] personnelArray = perstring.split("/n{1,}");//Obtenir le tableau du personnel
int index = (int) (Math.random() * personnelArray.length); // Générer un index de tableau aléatoire
//Définir les informations gagnantes, y compris les paramètres de format
String formatArg = "Les membres du public pour ce tirage au sort :/n/t%1$s/nFélicitations à %1$5s pour être devenu le grand gagnant de ce tirage au sort du public."
+ "/n/nNous attribuerons %1$5s:/n/t20 boîtes de yaourt périmé.";
//Ajouter des paramètres de personnel pour obtenir des informations gagnantes
String info = String.format(formatArg, personnelArray[index]);
textArea.setText(info);//Afficher les informations gagnantes dans la zone de texte
}
protected void do_button_1_actionPerformed(ActionEvent e) {
Système.exit(0);
}
}
L'effet est comme indiqué sur la figure :