Hovedfunksjonen til en dialogboks er at en applikasjon eller nettside skal hente inn noe fra brukeren. Det innspillet kan være en bekreftelse på at de har lest en melding eller noe de skriver inn i et tekstområde.

En dialogboks fanger umiddelbart brukerens oppmerksomhet. Det er et perfekt verktøy for å samle eller vise viktig informasjon.

Java er et mangfoldig språk som gir flere klasser for å lage dialogbokser. Disse klassene inkluderer JOptionPane, JDialog og JFrame.

JOptionPane-klassen

Du kan lage en standard dialogboks ved å bruke en av flere statiske metoder som tilhører JOptionPane-klassen. Disse inkluderer:

  • showMessageDialog(), som videresender en melding til brukeren.
  • showConfirmDialog(), som stiller et spørsmål som krever bekreftelse.
  • showInputDialog(), som ber en bruker om inndata.
  • showOptionDialog(), som er en kombinasjon av de tre andre metodene.

Opprette en JOptionPane-dialogboks

import javax.swing. JFrame;
import javax.swing. JOptionPane;

offentligklasseJOptionPaneApp{
JOptionPaneApp() {

instagram viewer

JFrame ramme = ny JFrame();
JOptionPane.showMessageDialog (ramme, "Dette er et JOptionPane-meldingsvindu.");
}

offentligstatisktomromhoved-(String[] args){
ny JOptionPaneApp();
}
}

Koden ovenfor oppretter følgende dialogboks:

Selv om JOptionPane har standard dialogbokser, har den mange alternativer som lar deg justere oppførselen. For eksempel kan meldingsdialogen ha en av flere typer. Den ovenfor er et eksempel på en INFORMATION_MESSAGE, som er standard. De andre meldingstypene er:

  • FEILMELDING
  • WARNING_MESSAGE
  • QUESTION_MESSAGE
  • PLAIN_MESSAGE

Opprette en feilmelding

Her er et eksempel på hvordan du bruker en annen meldingstype for JOptionPane-dialogen:

JOptionPane.showMessageDialog (ramme, "Dette er et JOptionPane-feilmeldingsvindu.",
"Feil", JOptionPane. FEILMELDING);

Bytt ut showMessageDialog() linje i det originale programmet med kodelinjen ovenfor, og du vil se følgende feildialog:

JDialog-klassen

JDialog-klassen lar deg lage egendefinerte dialogbokser. Dette Java klasse tilhører javax.swing pakke og utvider Dialog-klassen. Den har tilgang til et bredt utvalg av direkte og indirekte metoder. Denne Java-klassen har totalt 16 Java-konstruktører.

Bortsett fra standardkonstruktøren, tar hver av de 15 andre en ramme, et vindu eller en dialog med en kombinasjon av flere andre argumenter.

De primære JDialog-konstruktørene inkluderer:

  • JDialog() oppretter en dialogboks uten en ramme, tittel eller modus.
  • JDialog (dialogeier, strengtittel, boolsk modal) oppretter en dialogboks med en dialogeier, en strengtittel og en modus.
  • JDialog (rammeeier, strengtittel, boolsk modal) oppretter en dialogboks med en rammeeier, en strengtittel og en modus.
  • JDialog (vinduseier, strengtittel, boolsk modal) oppretter en dialogboks med en vinduseier, en strengtittel og en modus.

Opprette en JDialog-dialogboks

import java.awt. FlowLayout;
import java.awt.event. ActionEvent;
import java.awt.event. ActionListener;
import javax.swing. JButton;
import javax.swing. JDialog;
import javax.swing. JFrame;
import javax.swing. JLabel;
import javax.swing. Vinduskonstanter;

offentligklasseJDialogApp{
JDialogApp() {
JFrame ramme = ny JFrame();
JDialog dialog = ny JDialog (ramme, ekte);
dialog.setLayout(ny FlowLayout());

JLabel displayText = ny JLabel("Dette er et JDialog-vindu.");
JButton btn = ny JButton("OK");

btn.addActionListener(ny ActionListener() {
offentligtomromhandlingUtført(ActionEvent e){
dialog.setVisible(falsk);
}
});

dialog.add (displayTekst);
dialog.add (btn);

dialog.setSize(200,150);
dialog.setTitle("Dialogvindu");
dialog.setVisible(ekte);
dialog.setDefaultCloseOperation (WindowConstants. DISPOSE_ON_CLOSE);
}

offentligstatisktomromhoved-(String args[]){
ny JDialogApp();
}
}

Koden ovenfor oppretter følgende dialogboks:

Det er flere viktige aspekter ved koden du bør merke deg. Programmet bruker JDialog (rammeeier, boolsk modal) konstruktør, som den sender en JFrame og den "sanne" verdien som argumenter. JFrame er eieren av JDialog, som betyr at den er ansvarlig for å vise dialogboksen. Den "sanne" verdien betyr at dialogboksen blokkerer inndata til andre relaterte vinduer når den vises.

Konstruktøren i koden ovenfor tar ikke en tittel som argument. Imidlertid trenger rammeeieren en tittel. Så for den oppgaven kan du bruke setTitle() metode, som er tilgjengelig gjennom Dialog-klassen som JDialog utvider. De andre viktige metodene i koden er setVisible(), setSize(), og setDefaultCloseOperation().

setVisible tar en boolsk verdi og er ansvarlig for å vise rammen. setSize tar høyden og bredden på dialogvinduet. setDefaultCloseOperation bruker en av tre verdier for å bestemme hva som skjer når en bruker lukker dialogen.

JFrame-klassen

JDialog og JOptionPane bruker begge JFrame-klassen til å lage dialogbokser. Imidlertid kan JFrame-klassen lage dialogbokser på egen hånd. JFrame-klassen utvider Frame-klassen og, på samme måte som JDialog-klassen, lar den deg lage egendefinerte dialogbokser.

JFrame har fire konstruktører og flere direkte og indirekte metoder som du må bruke for å lage en dialogboks.

Opprette en JFrame-dialogboks

import java.awt.event. ActionEvent;
import java.awt.event. ActionListener;

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

offentligklasseJFrameApp{
JFrameApp() {
JFrame ramme = ny JFrame();
frame.setTitle("Dialogvindu");
JPanel panel = ny JPanel();

JLabel displayText = ny JLabel("Dette er et JFrame-vindu.");
panel.add (displayTekst);
JButton btn = ny JButton("OK-knapp");

btn.addActionListener(ny ActionListener() {
offentligtomromhandlingUtført(ActionEvent e){
frame.setVisible(falsk);
}
});

panel.add (btn);

frame.add (panel);
frame.setDefaultCloseOperation (WindowConstants. EXIT_ON_CLOSE);
frame.setSize(250, 150);
frame.setVisible(ekte);
}

offentligstatisktomromhoved-(String[] args){
ny JFrameApp();
}
}

Koden ovenfor oppretter følgende dialogboks:

Koden bruker standard JFrame-konstruktøren, og flere kjente metoder, for eksempel setTitle() metode (brukt i JDialog-appen ovenfor). Et ukjent objekt i programmet ovenfor er JPanel, som er en generisk beholder. Dette gir JFrame fleksibiliteten til å legge til flere oppsett og komponenter til en ramme.

De ActionListener() og actionPerformed() metoder håndterer hendelsen der en bruker klikker på OK knapp.

Hvilken Java-klasse er best for å lage dialogbokser?

Det eneste formålet med JOptionPane-klassen er å gjøre prosessen for opprettelse av dialogboks mer praktisk for Java-utviklere. Men hvis du trenger en mer tilpasset dialogboks, er JDialog-klassen det nest beste alternativet.

JFrame-klassen lager brukergrensesnitt, men du kan bruke den til å lage mange forskjellige elementer i et grafisk brukergrensesnitt, inkludert dialogbokser.

Dialogboksen som er opprettet med JFrame-klassen har et minimert ikon, mens de andre ikke har det. Hvis du vil ha en modal dialogboks som brukeren må handle før han fullfører en oppgave, så er ikke JFrame den beste tilnærmingen.

Hvordan skrive din første Java GUI-applikasjon 

Les Neste

DelekvitringDeleE-post

Relaterte temaer

  • Programmering
  • Programmering
  • Java
  • Kodingveiledninger

Om forfatteren

Kadeisha Kean (56 artikler publisert)

Kadeisha Kean er en fullstack-programvareutvikler og teknisk/teknologiskribent. Hun har den utpregede evnen til å forenkle noen av de mest komplekse teknologiske konseptene; produsere materiale som lett kan forstås av enhver teknologinybegynner. Hun er lidenskapelig opptatt av å skrive, utvikle interessant programvare og reise verden rundt (gjennom dokumentarer).

Mer fra Kadeisha Kean

Abonner på vårt nyhetsbrev

Bli med i vårt nyhetsbrev for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!

Klikk her for å abonnere