Java commençant par JShell-Un aperçu du monde Java

Premiers pas avec Java avec JShell-Un aperçu du monde Java

Commençons par Java avec JShell.

Objectif

Une personne qui n'a aucune expérience en programmation parvient à comprendre divers concepts qui apparaissent dans la programmation Java.

Cadre environnemental

Tout d'abord, à partir des paramètres d'environnement. Téléchargez le JDK à partir d'ici. http://jdk.java.net/14/

Si vous êtes nouveau sur la ligne de commande, vous souhaiterez peut-être utiliser le package avec le programme d'installation avec AdoptOpenJDK. https://adoptopenjdk.net/?variant=openjdk14&jvmVariant=hotspot Pour les utilisateurs Mac et Linux, téléchargez tar.gz

$ tar xf openjdk-14.0.2_osx-x64_bin.tar.gz

Je pense que ça va. Sous Windows, installez zip et décompressez-le dans le dossier approprié.

Démarrez JShell

Commençons JShell. Ouvrez "Invite de commandes" pour les utilisateurs Windows et "Terminal" pour les utilisateurs Mac et Linux.

$ jshell

Heureusement pour commencer

Au fait, $ jshell est une notation que vous devez taper jshell sur une telle ligne de commande et appuyer sur la touche [entrée].

S'il ne démarre pas, démarrez `` \ Program files \ Java \ jdk-11 \ bin \ jshell "pour Windows. Si vous entrez à propos de\ Prog` et appuyez sur [tab], cela sera terminé.

image.png

Entrez «12 + 23» comme essai et appuyez sur la touche [entrée]. Le résultat est "35". image.png

Si vous entrez quelque chose dans JShell et appuyez sur la touche [Entrée], JShell interprétera cette entrée comme du code Java et l'exécutera. Cette fois, je n'ai entré qu'un calcul, mais il fera également partie du programme Java. Ainsi, le premier programme Java est «12 + 23». Tu l'as fait!

Ci-après, l'entrée de jshell et le résultat sont exprimés comme suit.

jshell> 12 + 23
$1 ==> 35

Cela signifie que vous pouvez entrer «12 + 23» dans JShell et appuyer sur la touche [Entrée], et vous verrez «35». Ignorez la partie $ 1 ==> pour le moment.

Gérer les valeurs

Calcul

J'ai fait l'ajout plus tôt. Alors qu'en est-il de la soustraction? Essayez «4-3».

jshell> 4 - 3
$2 ==> 1

Utilisez «*» pour la multiplication et «/» pour la division. Vous pouvez également calculer le reste de la division avec «%».

jshell> 8 * 2
$3 ==> 16

jshell> 8 / 2
$4 ==> 4

jshell> 7 % 5
$5 ==> 2

Que diriez-vous de «3 + 4 * 2»?

jshell> 3 + 4 * 2
$6 ==> 11

La multiplication est calculée en premier. Si vous mettez «3 + 4» entre parenthèses, l'addition sera calculée en premier.

jshell> (3 + 4) * 2
$7 ==> 14

Divers types

Au fait, qu'en est-il du «22/7»?

jshell> 22 / 7
$8 ==> 3

Il est calculé comme un entier. Si vous voulez le résultat après la virgule décimale, c'est-à-dire si vous voulez le calculer comme un nombre réel, utilisez 22.0 / 7.

jshell> 22.0 / 7
$9 ==> 3.142857142857143

Si vous ajoutez un point décimal, il sera traité comme un nombre réel. Si l'un des termes de l'opération est un nombre réel, le calcul est effectué sous la forme d'un nombre réel. De cette façon, Java fait la distinction entre les nombres entiers et les nombres réels.

Chaînes et méthodes

Jusqu'à présent, nous avons traité des valeurs numériques. Les programmes traitent souvent une série de caractères tels que des mots et des phrases. Dans le monde de la programmation, une telle série de caractères est appelée une chaîne de caractères. En Java, il est placé entre «» »(guillemets doubles) pour représenter une chaîne de caractères.

jshell> "aaa"
$10 ==> "aaa"

Utilisez l'opérateur + pour concaténer des chaînes.

jshell> "te" + "st"
$11 ==> "test"

Et la soustraction? Ce serait pratique si vous pouviez obtenir " te " avec " test "-" st ".

jshell> "test" - "st"
|Erreur:
|Opérateur binaire'-'Le type d'opérande de n'est pas valide
|Premier type: java.lang.String
|Deuxième type: java.lang.String
|  "test" - "st"
|  ^-----------^

J'ai une erreur. Ici, l'opérande est le terme de l'opérateur. Il dit que vous ne pouvez pas utiliser de chaînes dans l'opérateur -. Ce serait bien de pouvoir lire correctement ces messages d'erreur, mais à ce stade, il est normal de reconnaître que vous ne pouvez pas utiliser de chaînes pour l'opérateur -. Seul l'opérateur + peut être utilisé comme opérateur pour les chaînes.

Méthode

Vous souhaiterez effectuer diverses opérations sur la chaîne de caractères. Par exemple, comptons le nombre de caractères. Essayez de taper "test" .length () . Si vous entrez jusqu'à len` et appuyez sur la touche [Tab], vous pourrez entrer dans la suite. Ces fonctions sont dites «complémentaires».

jshell> "test".length()
$12 ==> 4

Vous avez 4 Cette «length ()» est appelée une méthode. Il existe de nombreuses méthodes de ce type pour les chaînes qui effectuent des opérations sur des chaînes. Appuyez sur la touche [Tab] sur "test" .` pour afficher une liste de méthodes qui peuvent être appelées sur la chaîne. image.png

Méthode Utilisation
length () Récupère la longueur d'une chaîne
répéter (n) Répéter la chaîne n fois
replace (ancien, nouveau) Remplace l'ancien dans une chaîne par nouveau
charAt (index) Extraire le caractère d'index
substring (begin, end) Extraire du début à la fin de la chaîne
toUpperCase () chaîne majuscule
toLowerCase () Rendre la chaîne plus basse

Utilisons maintenant également d'autres méthodes. Lançons " test ". Repeat (3).

jshell> "test".repeat(3)
$13 ==> "testtesttest"

Vous voyez une chaîne que «test» se répète 3 fois. La méthode repeat est une méthode qui répète une chaîne de caractères un nombre spécifié de fois. Comme vous pouvez le voir, il y a des moments où vous devez spécifier quelque chose pour une méthode. La valeur spécifiée pour une telle méthode est appelée "argument". Utilisons une autre méthode replace. Essayez d'exécuter " test ".replace (" st "," ").

Avec la méthode charAt, vous pouvez récupérer le caractère à l'emplacement spécifié.

jshell> "test".charAt(2)
$13 ==> 's'

Notez que le premier caractère est le 0e. Dans la plupart des programmes, 0 est le premier élément et 1 est le deuxième élément.

jshell> "test".replace("st","")
$14 ==> "te"

La méthode replace est une méthode qui remplace une chaîne de caractères, et prend la chaîne de caractères avant le remplacement et la chaîne de caractères après le remplacement comme arguments. Lorsque vous prenez deux ou plusieurs arguments comme celui-ci, séparez les arguments par ,. " " Est appelé une chaîne vide. En remplaçant «st» par «», vous avez omis «st» dans la chaîne.

Vous pouvez également concaténer les appels de méthode.

jshell> "test".repeat(3).replace("st","")
$15 ==> "tetete"

Le "test" "est répété 3 fois pour devenir le" "test test test" ", et le" st "" est omis pour devenir le "tétete" ".

Exercice: Utilisez la méthode repeat pour créer une chaîne qui répète" hi " 4 fois Exercice: Utilisez la méthode replace pour créer une chaîne qui remplace p dans"raisin"par d. Exercice: Utilisez la méthode toLowerCase pour réduire" HELLO " Exercice: Utilisez la méthode substring pour créer une chaîne extraite de la première (deuxième dans une conversation quotidienne) de" minute ".

Opération JShell

Comme opération de base, appuyez sur la touche haut pour afficher ce que vous avez entré auparavant. Il peut être utilisé lorsque vous souhaitez réexécuter ce que vous avez entré précédemment.

Dans JShell, s'il peut être déterminé que la clé est entrée lorsque la touche [Entrée] est enfoncée, l'expression est exécutée. Cependant, si la ligne se termine à mi-chemin, par exemple lorsqu'un saut de ligne se produit au milieu ou lorsqu'il n'y a pas assez de parenthèses, il vous sera demandé de continuer la saisie comme suit.

jshell> "test".repeat(
   ...>

C'est bien si vous commencez une nouvelle ligne lorsque vous entrez une longue ligne, mais si vous pensez que vous avez entré une ligne mais que la ligne n'est pas terminée en raison du manque de parenthèses, il est difficile de trouver l'erreur et vous devez la saisir à nouveau. Parfois, il est tôt. Dans ce cas, vous pouvez annuler en appuyant sur [Ctrl] + [c].

Utilisez la commande / exit pour quitter JShell.

jshell> /exit
|terminer

$

variable

D'ailleurs, puisque cette valeur est proche du rapport de circonférence, je voudrais l'utiliser de différentes manières au lieu du rapport de circonférence. Cependant, il est difficile de saisir «22.0 / 7» un par un. C'est donc une variable. Les variables peuvent être définies en définissant var variable name = value.

jshell> var pi = 22.0 / 7
pi ==> 3.142857142857143

Ceci définit une variable appelée «pi» et lui attribue la valeur «3.142857142857143». Tapez simplement pi et vous verrez la valeur assignée.

jshell> pi
pi ==> 3.142857142857143

Utilisons ceci pour trouver la circonférence d'un cercle avec un rayon de 5. La longueur de la circonférence était le rapport diamètre x circonférence. Les variables peuvent être utilisées dans les opérations en tant que valeurs.

jshell> 5*2*pi
$16 ==> 31.428571428571427

La zone était le rayon x le rayon x la circonférence.

jshell> 5*5*pi
$17 ==> 78.57142857142857

De cette façon, nous avons pu utiliser des variables pour recycler les valeurs. Au fait, lorsque la variable pi a été définie à la position «$ 17», elle était affichée comme «pi». En d'autres termes, cela signifie que vous avez attribué «78,57142857142857» à la variable «$ 17».

jshell> $17
$17 ==> 78.57142857142857

À propos, en Java, Math.PI contient en fait un rapport de circonférence très précis.

jshell> Math.PI
$82 ==> 3.141592653589793

C'est le champ PI de la classe Math, mais étudions-le en détail.

En utilisant cette valeur comme rapport de circonférence, l'aire d'un cercle avec un rayon de 5 est:

jshell> 5*5*Math.PI
$81 ==> 78.53981633974483

Affectons ce Math.PI à la variable pi.

jshell> pi=Math.PI
pi ==> 3.141592653589793

De cette manière, vous pouvez également réaffecter des valeurs à des variables. Quand j'ai calculé à nouveau 5 * 5 * pi, j'ai obtenu le même résultat que lors de l'utilisation de Math.PI comme suit.

jshell> 5*5*pi
$84 ==> 78.53981633974483

Type de variable

Attribuons une chaîne de caractères à la variable pi.

jshell> pi="circle ratio"
|Erreur:
|Type incompatible: java.lang.Impossible de convertir la chaîne en double:
|  pi="circle ratio"
|     ^------------^

J'ai une erreur. On vous dit que «la chaîne ne peut pas être convertie en double». Les variables Java déterminent le type de valeur à laquelle la variable peut être attribuée. Un tel type de valeur est appelé un «type». En d'autres termes, les variables sont de type fixe. Vérifions maintenant le type de la variable. Dans JShell, vous pouvez vérifier le type d'une variable avec la commande / var.

jshell> /var pi
|    double pi = 3.141592653589793

Cela signifie que la variable «pi» est de type «double» et reçoit la valeur «3.141592653589793». double est le type qui gère les nombres réels.

Regardons le cas des chaînes. Tout d'abord, préparez la variable str à laquelle la chaîne de caractères`" cercle "ʻ est assignée.

jshell> var str="circle"
str ==> "circle"

Vérifions le type avec la commande / var.

jshell> /var str
|    String str = "circle"

Il a un type de «String». La chaîne de caractères est représentée par le type «String». Tenter d'attribuer un nombre réel entraînera une erreur.

jshell> str=3.14
|Erreur:
|Type incompatible:double java.lang.Impossible de convertir en chaîne:
|  str=3.14
|      ^--

Jusqu'à présent, nous avons préparé des variables en utilisant var. Si vous utilisez var, le type de variable sera décidé automatiquement. Ici, vous pouvez également spécifier un type pour préparer une variable.

jshell> String message="hello"
message ==> "hello"

Vous pouvez également appeler des méthodes sur de telles variables.

jshell> message.length()
$325 ==> 5

Les méthodes qui peuvent être appelées sont déterminées par le type. La méthode «length» et la méthode «repeat» sont des méthodes préparées pour le type «String». Aucune méthode ne peut être appelée pour le type «double».

Vous pouvez également affecter la valeur renvoyée par la méthode à une variable.

jshell> var count=message.length()
count ==> 5

Ici, la variable «count» est de type «int».

jshell> /var count
|    int count = 5

Le type ʻint` est un type qui gère les entiers.

Exercice: Utilisons «var» pour préparer une variable «root2» avec un nombre réel «1.414». Exercice: Au lieu d'utiliser var, préparons un mot variable auquel la chaîne" apple "est assignée. Exercice: Appelons la méthode toUpperCase sur le mot préparé ci-dessus.

Définition de la méthode

J'ai pu utiliser des variables pour recycler les valeurs, mais ce serait bien de pouvoir recycler des expressions telles que rayon x rayon x circonférence. En Java, vous pouvez réutiliser des expressions en définissant des méthodes.

C'est un peu long, mais essayez d'exécuter double menseki (double r) {return r * r * pi;}.

jshell> double menseki(double r){return r*r*pi;}
|Créé le suivant:Méthode Menseki(double)

La méthode menseki est maintenant définie. Vous pouvez l'utiliser comme suit.

jshell> menseki(5)
$34 ==> 78.53981633974483

jshell> menseki(3)
$33 ==> 28.274333882308138

Vous pouvez maintenant réutiliser la formule.

Examinons de plus près la définition de la méthode. Si vous cassez la définition de méthode de manière appropriée, ce sera comme suit.

double menseki(double r) {
  return r*r*pi;
}

La définition est la suivante:

Nom de la méthode de type de résultat(Type d'argument Variable qui gère les arguments) {
expression de retour;
}

Le type est le type de valeur, et dans ceux qui sont apparus jusqu'à présent, l'entier est ʻint, le nombre réel est double et la chaîne de caractères est String. Cette fois, nous avons défini une méthode nommée mensekiqui prend un nombre réel et le renvoie. J'essaye de recevoir l'argument reçu avecr. Le r de rayon. Utilisez l'instruction return` pour renvoyer une valeur. Ici, le rayon reçu est multiplié deux fois et multiplié par le rapport de circonférence est renvoyé.

Vous pouvez également le définir avec un saut de ligne dans JShell comme suit:

jshell> double menseki(double r) {
   ...>   return r*r*pi;
   ...> }
|Changé ce qui suit:Méthode Menseki(double)

Exercice: Le nom de l'argument ne doit pas nécessairement être «r». En tant que menseki2, essayez de définir une méthode avec la même fonction afin que l'argument soit reçu par un. Exercice: essayez de définir une méthode qui prend un rayon et renvoie la longueur de la circonférence.

Swing

N'était-ce pas ennuyeux avec juste des lettres? Alors faisons quelque chose qui ne soit pas que des lettres. Afficher une fenêtre. En Java, un toolkit GUI appelé Swing est fourni en standard. Une boîte à outils GUI est un ensemble d'éléments qui affichent des fenêtres et organisent des boutons.

Afficher la fenêtre

Préparez d'abord une fenêtre.

jshell> var f = new javax.swing.JFrame("test")
f ==> javax.swing.JFrame[fram ... bled=true]

Je ne suis pas sûr, mais quelque chose a été attribué à la variable f. En réponse, essayez d'appeler la méthode show ().

jshell> f.show()

Quelque chose était affiché dans le coin supérieur gauche. image.png C'est petit, alors essayez d'augmenter la taille. Utilisez la méthode setSize pour déterminer la taille. Ici, spécifiez la taille horizontale et la taille verticale.

jshell> f.setSize(400,300)

J'ai grandi! image.png

Classes et objets

Lors de la préparation d'une fenêtre var f = new javax.swing.JFrame("test") A été exécuté. En Java, les objets gérés par des programmes tels que les fenêtres et les boutons sont préparés comme des "objets". Ici, la variable «f» reçoit un objet window. Dans Swing, les fenêtres sont représentées par le type «javax.swing.JFrame». Les objets sont créés en fonction d'un type. Le type sur lequel un objet est basé est appelé une "classe". javax.swing.JFrame est une classe. Lors de la création d'un objet à partir d'une classe, utilisez l'opérateur new pour le créer en tant quenouvelle classe (argument). Les arguments sont déterminés par la classe. De certains points de vue, il semble que vous appeliez une méthode spéciale avec l'opérateur new lorsque vous créez un objet. Lorsqu'elle est vue de cette façon, cette méthode est appelée un "constructeur". Un constructeur est une méthode qui porte le même nom qu'une classe et qui nécessite l'appel de l'opérateur new.

JavaDoc La documentation de ce javax.swing.JFrame peut être trouvée ici. https://download.java.net/java/early_access/jdk11/docs/api/java.desktop/javax/swing/JFrame.html

C'est Anglais. Si vous aimez le japonais, la version est ancienne, mais ici. https://docs.oracle.com/javase/jp/10/docs/api/javax/swing/JFrame.html

Le format de ce document est appelé "JavaDoc". La documentation de l'API Java est généralement dans ce format.

Si vous utilisez le nom de classe javadoc + tel que "javadoc JFrame", JavaDoc sortira.

Par exemple, le constructeur utilisé cette fois a l'explication suivante. スクリーンショット 2018-06-11 19.54.59.png

Si vous regardez ceci, vous pouvez voir que nous avons utilisé un constructeur appelé JFrame (String title). Nous avons également un constructeur sans argument, vous pouvez donc voir que vous pouvez créer une fenêtre sans spécifier de titre. Vous ne le savez peut-être pas sans étudier un peu plus le langage Java, mais vérifier le JavaDoc peut vous aider à comprendre ce que vous faisiez. De plus, en général, tout n'est pas expliqué dans le manuel, il est donc important de se référer à ces informations primaires et de les saisir avec précision.

Exercice: Examinons la méthode de remplacement de chaîne utilisée jusqu'à présent avec JavaDoc. Conseil: il est pratique de rechercher dans le champ de recherche en haut à droite.

Package et import

Maintenant que la fenêtre est visible, plaçons la zone de texte. La zone de texte est une partie dans laquelle vous pouvez saisir une chaîne de caractères sur plusieurs lignes. Dans Swing, la zone de texte est gérée par la classe javax.swing.JTextArea. Les pièces ainsi placées dans la fenêtre sont appelées "composants". Pour placer la zone de texte, vous devez d'abord créer un objet pour la zone de texte. Pour créer un objet, vous avez appelé une méthode avec le même nom que le nom de la classe, c'est-à-dire le constructeur avec l'opérateur new. Cependant, javax.swing.JTextArea est long et fastidieux à saisir. En fait, javax.swing.JTextArea est divisé en deux parties, seul le dernier délimiteur est le nom de la classe, et avant cela, c'est le nom du package. En d'autres termes, il représente la classe JTextArea du package javax.swing. Un "package" est un mécanisme de classification des classes Java.

Par conséquent, vous pouvez omettre le nom du package en utilisant l'instruction ʻimport. ʻImport javax.swing. * Permet aux classes du package javax.swing d'être représentées par le nom de la classe seul, en omettant le nom du package.

jshell> import javax.swing.*

Je l'ai ignoré jusqu'à présent, mais parfois le type String était affiché comme java.lang.String. Le type String était inclus dans le package java.lang, et le package java.lang pouvait omettre le nom du package car ʻimport` avait été effectué à l'avance.

Créons maintenant un objet de la classe JTextArea qui représente la zone de texte.

jshell> var textarea = new JTextArea()
textarea ==> javax.swing.JTextArea[,0,0,0x0,i ... rap=false]

Vous devez le placer dans la fenêtre. Vous pouvez l'ajouter à une fenêtre en appelant la méthode ʻadd sur l'objet JFrame` qui représente la fenêtre.

jshell> f.add(textarea)
$14 ==> javax.swing.JTextArea[,0,0,0x0,inval ... se,wrap=false]

Cependant, il ne sera pas affiché dans la fenêtre tel quel, vous devez donc réorganiser la fenêtre. Redimensionner la fenêtre la réorganisera, essayez donc de faire glisser le bord de la fenêtre pour la redimensionner ou appelez la méthode setSize. Si la taille de la fenêtre n'est pas modifiée lorsque vous spécifiez la taille avec la méthode setSize, rien ne se passe, vous devez donc changer un peu la taille.

jshell> f.setSize(400,301)

Une zone de texte s'affiche et vous pouvez saisir des caractères.

image.png

Vous pouvez ajouter une chaîne à la zone de texte avec la méthode append.

jshell> textarea.append("te")

jshell> textarea.append("st")

Cependant, s'il est laissé tel quel, il sera ajouté en continu sans se casser. image.png

Les sauts de ligne sont représentés par «\ n». (Pour Windows, c'est \ n)

jshell> textarea.append("\ntester\n")

Les sauts de ligne ont été faits correctement. image.png

Ajouter un bouton

Ajoutons maintenant un bouton. Dans Swing, les boutons sont gérés par la classe JButton. Vous pouvez spécifier la chaîne d'étiquette de bouton comme argument du constructeur.

jshell> var button = new JButton("Hello")
button ==> javax.swing.JButton[,0,0,0x0,inval...pable=true]

Je veux ajouter ceci à la fenêtre, mais j'ai déjà la zone de texte en place, donc je dois l'ajouter là où elle ne se chevauche pas. Dans JFrame, les composants sont placés en spécifiant le nord, le sud, l'est, l'ouest et le centre. image.png

ʻSpécifiez l'emplacement à placer dans le premier argument de la méthode add` et le composant à placer dans le deuxième argument.

jshell> f.add("North", button)
$27 ==> javax.swing.JButton[,0,0,0x0,inval...ltCapable=true]

Si vous avez mal orthographié «Nord», vous obtiendrez une erreur comme celle-ci. Veuillez noter qu'il est également sensible à la casse.

jshell> f.add("Nort", button)
|  Exception java.lang.IllegalArgumentException: cannot add to layout: unknown constraint: Nort
|        at BorderLayout.addLayoutComponent (BorderLayout.java:468)
|        at BorderLayout.addLayoutComponent (BorderLayout.java:429)
|        at JRootPane$1.addLayoutComponent (JRootPane.java:507)
|        at Container.addImpl (Container.java:1151)
|        at Container.add (Container.java:1028)
|        at JFrame.addImpl (JFrame.java:553)
|        at Container.add (Container.java:459)
|        at (#31:1)

À propos, cette erreur est différente de celle où j'ai essayé d'attribuer une chaîne à la variable pi il y a longtemps. C'est aussi différent de quand vous avez mal orthographié ʻadd`.

jshell> f.ad("North", b)
|Erreur:
|Impossible de trouver le symbole
|symbole:Annonce de méthode(java.lang.String,javax.swing.JButton)
|endroit:Tapez javax.swing.Variable JFrame f
|  f.ad("North", b)
|  ^--^

Ces erreurs se produisent à des moments différents, l'erreur lors de la tentative d'attribution d'une chaîne de caractères à ajouter ou la variable pi est l'erreur lors de l'interprétation du programme, l'erreur lorsque "North" se trompe est le traitement interprété Il s'agit d'une erreur lors de l'exécution. Une erreur lors de l'interprétation d'un programme est appelée une erreur de compilation et une erreur lors de l'exécution est appelée une exception. Maintenant, il est difficile de faire la différence car les deux se produisent lorsque vous tapez une commande et appuyez sur Entrée, mais vous le verrez clairement pendant le développement réel. Pour le moment, ce n'est pas grave si vous pensez qu'il existe deux types d'erreurs.

Eh bien, même si l'ajout réussit, le bouton n'est pas encore affiché. Si vous reconstruisez la fenêtre avec la méthode setSize, le bouton apparaîtra.

jshell> f.setSize(400,300)

image.png

Mais lorsque j'appuie sur ce bouton, rien ne se passe. J'ai besoin d'écrire un traitement. Essayez de taper: ʻAddActionListener est un peu long, mais si vous tapez jusqu'à ʻaddAc et appuyez sur la touche [tab], le reste devrait être terminé.

jshell> button.addActionListener(ae -> textarea.append("Hello!\n"))

Vous devriez maintenant voir "Bonjour" lorsque vous appuyez sur le bouton. image.png

Utilisez la méthode ʻaddActionListener pour ajouter un traitement lorsque le bouton est enfoncé. Ici, ʻae-> textarea.append ("Hello! \ N") ʻest spécifié comme argument. J'ai dû passer un certain traitement à la méthode addActionListener avec le sentiment "Veuillez appeler ce traitement lorsque le bouton est enfoncé". Le traitement ici est textarea.append (" Hello! \ N "), mais vous devez utiliser "expression lambda" etc. pour passer le traitement en tant que valeur. L'expression lambda s'écrit comme suit.

argument->En traitement

Dans le cas du traitement lorsque le bouton est enfoncé, ʻAe est utilisé ici car il reçoit l'objet ʻActionEvent comme argument, mais tout va bien tant qu'il est facile à comprendre. L'argument reçu n'est pas utilisé cette fois.

Recevoir une entrée dans un champ de texte

Faisons de notre mieux. Essayons d'afficher la chaîne de caractères saisie dans le champ de texte lorsque le bouton est enfoncé. Je voudrais ajouter un champ de texte et un bouton, mais je ne peux pas l'ajouter tel quel avec la méthode de mise en page JFrame. Nous utilisons donc le composant JPanel.

jshell> var panel = new JPanel()

jshell> f.add("South", panel)

Le composant JPanel a une disposition dans laquelle les composants sont disposés dans l'ordre à partir de la gauche, et si vous placez divers composants ici et que vous les ajoutez ensuite à la fenêtre JFrame, cela aura l'air bien. J'ai décidé de l'ajouter à la position «Sud» ici. Lorsque je change la taille de la fenêtre, quelque chose s'affiche un peu. image.png

Ajoutez un champ de texte. Le champ de texte est un composant d'entrée sur une ligne et utilise le composant JTextField.

jshell> var textfield = new JTextField()

jshell> textfield.setColumns(15)

jshell> panel.add(textfield)

La largeur est déterminée par la méthode setColumns. image.png

Ajoutons un bouton à la fin.

jshell> var printButton = new JButton("Print")

jshell> printButton.addActionListener(ae -> textarea.append(textfield.getText() + "\n"))

jshell> panel.add(printButton)

Lorsque vous appuyez sur le bouton, la chaîne de caractères saisie dans le champ de texte est ajoutée à la zone de texte. image.png

Exercice: Ajoutons un bouton à afficher dans la zone de texte avec «Ouais!». Exercice: Ajoutons un bouton qui met en majuscule l'alphabet de la chaîne de caractères saisie dans le champ de texte et l'affiche dans la zone de texte. Pour mettre en majuscule l'alphabet dans la chaîne, utilisez la méthode toUpperCase. Tout d'abord, essayons d'utiliser la méthode toUpperCase sur JShell.

Laissez JShell pour écrire des programmes Java

Enfin, écrivons ce que nous avons essayé avec JShell en tant que programme Java indépendant. Entrez le code source suivant dans le Bloc-notes ou Text Edit et enregistrez-le sur votre bureau en tant que FirstWindow.java.

FirstWindow.java


import javax.swing.*;

public class FirstWindow {
  public static void main(String... args) {
    var frame = new JFrame("test");

    var textarea = new JTextArea();
    frame.add(textarea);

    var textfield = new JTextField();
    textfield.setColumns(15);
    var button = new JButton("Print");
    button.addActionListener(ae -> textarea.append(textfield.getText() + "\n"));

    var panel = new JPanel();
    panel.add(textfield);
    panel.add(button);
    frame.add("North", panel);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.show();
  }
}

Divers éléments qui n'apparaissaient pas dans JShell ont été ajoutés. De plus, les commandes entrées dans JShell ont ; (point-virgule). Cependant, par rapport à avant de commencer ce tutoriel, je pense que c'est comme "je peux le lire, je peux le lire!"

Maintenant, déplaçons ce code source. Ouvrez une invite de commande. Je n'utiliserai pas JShell cette fois. Utilisez la commande cd pour accéder au bureau.

$ cd Desktop

Ensuite, compilez le code source que vous venez de saisir avec la commande javac.

$ javac FirstWindow.java

Si une erreur se produit, corrigez-la, enregistrez-la, puis compilez-la à nouveau. Lorsque l'erreur disparaît, vérifions le fichier créé. Utilisez la commande dir sous Windows et la commande ls sous Mac et Linux.

$ dir FirstWindow.*

Vous avez maintenant un fichier FirstWindow.class. Voici le code exécutable Java. Utilisez la commande java pour ce faire.

$ java FirstWindow

Avez-vous vu une fenêtre? S'il est affiché, il réussit. image.png

Commencez votre étude à grande échelle de Java à partir d'ici.

Recommended Posts

Java commençant par JShell-Un aperçu du monde Java
Suivez le lien avec Selenium (Java)
Bonjour tout le monde avec le moteur de modèle Java Thymeleaf
AWS Lambda (Lambda) Partie 1 avec Java pour démarrer maintenant
Développement Java avec Codenvy: Hello World! Run
Essayez d'utiliser la télécommande Wii en Java
[Java] Obtenez la date avec la classe LocalDateTime
Hello World, une application d'interface graphique multiplateforme avec Groovy fonctionnant sur la plate-forme Java
[LeJOS] Contrôlons le moteur EV3 avec Java
[Java] Réglez l'heure depuis le navigateur avec jsoup
Comprendre le framework MVC avec le contrôleur Java 3/4 côté serveur
Calculer le score de similarité des chaînes de caractères avec JAVA
[Java] Hello World avec Java 14 x Spring Boot 2.3 x JUnit 5 ~
Afficher "Hello World" dans le navigateur à l'aide de Java
Comprendre le framework MVC avec le modèle Java 2/4 côté serveur
Java, bonjour le monde!
Java Hello World
Tracez le SQL exécuté avec l'agent java Application Insights
[Tutoriel] Télécharger Eclipse → Lancer l'application avec Java (Pléiades)
[Java] [Spring Boot] Spécifier le profil d'exécution --Spring Boot à partir de NetBeans
CI l'architecture des applications Java / Kotlin avec ArchUnit
Vérifiez le comportement de Java Intrinsic Locks avec bpftrace
[Java] Obtenez la date 10 jours plus tard avec la classe Calendar
Connexion HTTPS avec Java au serveur de certificats auto-signé
[LeJOS] Contrôlons à distance le moteur EV3 avec Java
Essayez de créer Java dans un module natif avec GraalVM
L'histoire de la création de DTO, semblable à Dao avec Java, SQLite
Bureau Java avec le même frontal que le WEB.
Remplacez seulement une partie de l'hôte URL par java
Commencez avec Java sans serveur avec le framework léger Micronaut!
Java EE sans serveur à partir de Quarkus et Cloud Run