Hjem Personlig finansiering Hvordan du lager innvendige klasser i Java - dummies

Hvordan du lager innvendige klasser i Java - dummies

Video: Sailing, Brevik Norway 2018 2024

Video: Sailing, Brevik Norway 2018 2024
Anonim

Her er store nyheter! I Java kan du definere en klasse inne i en annen klasse! Her inneholder klassen GameFrame en klasse som heter MyActionListener .

importer java. AWT. FlowLayout;

importer java. AWT. begivenhet. Actione;

importer java. AWT. begivenhet. Action;

importer java. util. Tilfeldig;

importer javax. svinge. JButton;

import javax. svinge. JFrame;

importer javax. svinge. JLabel;

importer javax. svinge. JTextField;

class GameFrame utvider JFrame {

privat statisk endelig lang serialVersionUID = 1L;

int randomNumber = nytt tilfeldig (). nextInt (10) + 1;

int numGuesses = 0;

JTextField textField = nytt JTextField (5);

JButton-knapp = ny JButton ("Guess");

JLabel label = nytt JLabel (numGuesses + "guesses");

offentlig GameFrame () {

setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE);

setLayout (new FlowLayout ());

legg (tekstfelt);

legg (knapp);

legg (label);

knapp. addActionListener (ny MyActionListener () );

pakke ();

setVisible (true);

}

klassen MyActionListener implementerer ActionListener {

@Override

public void actionPerformed (ActionEvent e) {

String textFieldText = textField . GetText ();

hvis (Integer. ParseInt (textFieldText) == randomNumber) {

-knappen. setEnabled (false);

tekstfeltet. setText (textField. getText () + "Yes!");

tekstfeltet. setEnabled (false);

} annet {

textField. setText ("");

tekstfeltet. requestFocus ();

}

numGuesses ++;

String guessWord = (numGuesses == 1)? "Gjette": "gjetninger";

etikett. setText (numGuesses + guessWord);

}

}

}

Klassen MyActionListener ovenfor er en indre klasse. En indre klasse er mye som alle andre klasser. Men innenfor en indre klasses kode, kan du referere til de vedlagte klassens felter. For eksempel bruker flere setninger i MyActionListener navnet textField og textField i vedlegget GameFrame .

Merk at koden ovenfor bruker MyActionListener -klassen bare én gang. (Den eneste bruken er i en samtale til -knappen. AddActionListener .) Så, trenger du virkelig et navn på noe som bare brukes en gang? Nei, det gjør du ikke. Du kan erstatte hele definisjonen av den indre klassen inne i samtalen til -knappen.addActionListener . Når du gjør dette, har du en anonym indre klasse. Slik fungerer det.

importer java. AWT. FlowLayout;

importer java. AWT. begivenhet. Actione;

importer java. AWT. begivenhet. Action;

importer java. util. Tilfeldig;

importer javax. svinge. JButton;

importer javax. svinge. JFrame;

importer javax. svinge. JLabel;

importer javax. svinge. JTextField;

class GameFrame utvider JFrame {

privat statisk endelig lang serialVersionUID = 1L;

int randomNumber = nytt tilfeldig (). nextInt (10) + 1;

int numGuesses = 0;

JTextField textField = nytt JTextField (5);

JButton button = ny JButton ("Guess");

JLabel label = nytt JLabel (numGuesses + "guesses");

offentlig GameFrame () {

setDefaultCloseOperation (JFrame. EXIT_ON_CLOSE);

setLayout (new FlowLayout ());

legg (tekstfelt);

legg (knapp);

legg (label);

knapp. addActionListener (ny ActionListener () {

@Override

offentlig ugyldig handlingPerformert (ActionEvent e) {

String textFieldText = textField. getText ();

hvis (Integer. parseInt (textFieldText) = = randomNumber) {

-knappen. setEnabled (false);

textField. setText (textField. getText () + "Yes!");

textField. setEnabled (false);

} else {< textField. SetText ("");

textField. RequestFocus ();

}

numGuesses ++;

String guessWord = (numGuesses == 1)? "Gjetning": "gjetninger"; < label. SetText (numGuesses + guessWord);

}

}

);

pakke (); setVisible (true);

}

}

Inner klasser er gode for ting som hendelseshåndterere, som for eksempel

actionPerformed

metoden. Det vanskeligste med en anonym indre klasse holder styr på parentesene, de krøllete båndene og innrykket. Noen ydmyke råd: begynn å skrive kode uten noen indre klasser. Senere, når du blir lei av vanlige Java-klasser, eksperimentere ved å bytte noen av dine vanlige klasser til indre klasser.

Hvordan du lager innvendige klasser i Java - dummies

Redaktørens valg

Ved hjelp av farger og gradienter med HTML5 Canvas Tag - dummies

Ved hjelp av farger og gradienter med HTML5 Canvas Tag - dummies

Nesten alle operasjoner i HTML5 lerret funksjonen implementerer en fylle eller stroke stil. For å få mest mulig ut av lerretet, må du forstå hvordan de fungerer. De tre primære typene stiler du kan bruke på fyll og slag er farger, gradienter og mønstre. Bruke farger med HTML5 lerret-merket For å spesifisere en ...

Ved hjelp av HTML for å kode websidene dine - dummies

Ved hjelp av HTML for å kode websidene dine - dummies

HTML lar deg legge til beskrivende koder på web sidetekst, for å endre utseendet, eller opprette lister, tabeller, koblinger og så videre. HTML er designet for å være noe som mennesker kan lese og at maskiner kan behandle, en form for felles grunnlag for menneskelig kommunikasjon. Anta at du vil legge til fet skrift til et ord ...

Redaktørens valg

Slik skriver du Excel-formler og -funksjoner direkte i regnearkceller - dummier

Slik skriver du Excel-formler og -funksjoner direkte i regnearkceller - dummier

Kanskje den enkleste oppføringen Metoden er å skrive en formel direkte i en celle i et Excel-regneark. Skriv bare formler som ikke inneholder noen funksjoner, og trykk Enter-tasten for å fullføre oppføringen. Prøv dette enkle eksempelet: Klikk på en celle der formelen skal skrives inn. Skriv inn denne enkle matematikkbaserte formelen: = 6 + (9/5) ...

Hvordan du skriver inn lister og seriell data ved hjelp av AutoFill i Excel 2016 - dummies

Hvordan du skriver inn lister og seriell data ved hjelp av AutoFill i Excel 2016 - dummies

I Excel 2016, kan data som faller inn i kategorien "seriell" - månedens navn, ukedag og sammenhengende tall og datoer, for eksempel - skrives inn raskt med kommandoen AutoFill. Tro det eller ei, Excel gjenkjenner visse typer seriell data og går inn i den for deg som en del av AutoFill-funksjonen. ...

Hvordan du skriver inn en funksjon i Excel med funksjonskommandoen - dummies

Hvordan du skriver inn en funksjon i Excel med funksjonskommandoen - dummies

Hvis du er ikke kjent med hvordan en funksjon fungerer i Excel - kanskje du ikke engang er sikker på hvilken funksjon du vil bruke - du må bruke Formulas-fanens Innsett Funksjon-kommando for å finne funksjonen og deretter identifisere argumentene riktig. Hvis du vil bruke kommandoen Funksjonsveiviser på denne måten, følg ...

Redaktørens valg

ÅNdelig gjenoppretting: Den samaritanske kvinne ved brønndummene

ÅNdelig gjenoppretting: Den samaritanske kvinne ved brønndummene

Den samaritanske kvinnen ved brønnen er ingen engel. Blandet opp med en feil folkemengde, denne stakkars kvinnen fra Samaria har et godt rykte. Hun hadde vært gift fem ganger og bodde i synd med en mann som ikke var hennes ektemann. Gjennom hennes historie kommer leksjonen at folk ikke burde leve av kjønnslig glede. ...

Gjenoppleve den bibelske julehistorien - dummies

Gjenoppleve den bibelske julehistorien - dummies

I stedet for bare å vises på jorden en dag eller "stråle ned" bruk Trek-talk), sier Jesus at han har kommet inn i denne verden på de mest ortodokse måtene: fødsel. Jesu utseende på jorden er kjent som inkarnasjonen, eller hva Johannes-evangeliet kaller Jesus "blir kjøtt. "Interessant nok, skjønner John ikke hendelsene ...