Huvudfunktionen i en dialogruta är att en applikation eller webbplats ska hämta viss input från användaren. Den inmatningen kan vara en bekräftelse på att de har läst ett meddelande eller något de skriver in i ett textområde.
En dialogruta fångar omedelbart en användares uppmärksamhet. Det är ett perfekt verktyg för att samla in eller visa viktig information.
Java är ett mångsidigt språk som tillhandahåller flera klasser för att skapa dialogrutor. Dessa klasser inkluderar JOptionPane, JDialog och JFrame.
Klassen JOptionPane
Du kan skapa en standarddialogruta med en av flera statiska metoder som tillhör klassen JOptionPane. Dessa inkluderar:
- showMessageDialog(), som vidarebefordrar ett meddelande till användaren.
- showConfirmDialog(), som ställer en fråga som kräver bekräftelse.
- showInputDialog(), som uppmanar en användare att skriva in.
- showOptionDialog(), som är en kombination av de tre andra metoderna.
Skapa en JOptionPane-dialogruta
importera javax.swing. JFrame;
importera javax.swing. JOptionPane;offentligklassJOptionPaneApp{
JOptionPaneApp() {
JFrame ram = ny JFrame();
JOptionPane.showMessageDialog (ram, "Detta är ett JOptionPane-meddelandefönster.");
}
offentligstatisktomhethuvud(Sträng[] args){
ny JOptionPaneApp();
}
}
Koden ovan skapar följande dialogruta:
Även om JOptionPane tillhandahåller standarddialogrutor, har den många alternativ som låter dig justera dess beteende. Till exempel kan meddelandedialogen ha en av flera typer. Den ovan är ett exempel på en INFORMATION_MESSAGE, vilket är standard. De andra meddelandetyperna är:
- FELMEDDELANDE
- VARNINGSMEDDELANDE
- QUESTION_MESSAGE
- PLAIN_MESSAGE
Skapar ett felmeddelande
Här är ett exempel på hur du använder en annan meddelandetyp för din JOptionPane-dialogruta:
JOptionPane.showMessageDialog (ram, "Detta är ett JOptionPane-felmeddelandefönster.",
"Fel", JOptionPane. FELMEDDELANDE);
Ersätt showMessageDialog() rad i det ursprungliga programmet med kodraden ovan, och du kommer att se följande feldialogruta:
JDialog-klassen
Klassen JDialog låter dig skapa anpassade dialogrutor. Detta Java klass tillhör javax.swing paket och utökar klassen Dialog. Den har tillgång till en mängd olika direkta och indirekta metoder. Denna Java-klass har totalt 16 Java-konstruktörer.
Förutom standardkonstruktorn tar var och en av de 15 andra en ram, ett fönster eller en dialogruta med en kombination av flera andra argument.
De primära JDialog-konstruktörerna inkluderar:
- JDialog() skapar en dialogruta utan ram, titel eller läge.
- JDialog (dialogägare, strängtitel, boolesk modal) skapar en dialogruta med en dialogägare, en strängtitel och ett läge.
- JDialog (ramägare, strängtitel, boolesk modal) skapar en dialogruta med en ramägare, en strängtitel och ett läge.
- JDialog (fönsterägare, strängtitel, boolesk modal) skapar en dialogruta med en fönsterägare, en strängtitel och ett läge.
Skapa en JDialog-dialogruta
importera java.awt. FlowLayout;
importera java.awt.event. ActionEvent;
importera java.awt.event. ActionListener;
importera javax.swing. JButton;
importera javax.swing. JDialog;
importera javax.swing. JFrame;
importera javax.swing. JLabel;
importera javax.swing. Fönsterkonstanter;offentligklassJDialogApp{
JDialogApp() {
JFrame ram = ny JFrame();
JDialog dialog = ny JDialog (ram, Sann);
dialog.setLayout(ny FlowLayout());JLabel displayText = ny JLabel("Detta är ett JDialog-fönster.");
JButton btn = ny JButton("OK");btn.addActionListener(ny ActionListener() {
offentligtomhetåtgärd Utförd(ActionEvent e){
dialog.setVisible(falsk);
}
});dialog.add (displayText);
dialog.add (btn);dialog.setSize(200,150);
dialog.setTitle("Dialogfönster");
dialog.setVisible(Sann);
dialog.setDefaultCloseOperation (WindowConstants. DISPOSE_ON_CLOSE);
}
offentligstatisktomhethuvud(Strängarg[]){
ny JDialogApp();
}
}
Koden ovan skapar följande dialogruta:
Det finns flera viktiga aspekter av koden som du bör notera. Programmet använder JDialog (ramägare, boolesk modal) konstruktör, till vilken den passerar en JFrame och det "sanna" värdet som argument. JFrame är ägaren till JDialog, vilket betyder att den är ansvarig för att visa dialogrutan. Det "sanna" värdet betyder att dialogrutan blockerar inmatning till andra relaterade fönster när den visas.
Konstruktören i koden ovan tar inte en titel som argument. Ramägaren behöver dock en titel. Så för den uppgiften kan du använda setTitle() metod, som är tillgänglig via klassen Dialog som JDialog utökar. De andra viktiga metoderna i koden är setVisible(), setSize(), och setDefaultCloseOperation().
setVisible tar ett booleskt värde och ansvarar för att visa ramen. setSize tar höjden och bredden på dialogfönstret. setDefaultCloseOperation tar ett av tre värden för att avgöra vad som händer när en användare stänger dialogrutan.
JFrame-klassen
JDialog och JOptionPane använder båda klassen JFrame för att skapa dialogrutor. Däremot kan JFrame-klassen skapa dialogrutor på egen hand. Klassen JFrame utökar klassen Frame och, precis som klassen JDialog, låter den dig skapa anpassade dialogrutor.
JFrame har fyra konstruktorer och flera direkta och indirekta metoder som du behöver använda för att skapa en dialogruta.
Skapa en JFrame-dialogruta
importera java.awt.event. ActionEvent;
importera java.awt.event. ActionListener;importera javax.swing. JButton;
importera javax.swing. JFrame;
importera javax.swing. JLabel;
importera javax.swing. JPanel;
importera javax.swing. Fönsterkonstanter;offentligklassJFrameApp{
JFrameApp() {
JFrame ram = ny JFrame();
frame.setTitle("Dialogfönster");
JPanel panel = ny JPanel();JLabel displayText = ny JLabel("Detta är ett JFrame-fönster.");
panel.add (displayText);
JButton btn = ny JButton("OK-knapp");btn.addActionListener(ny ActionListener() {
offentligtomhetåtgärd Utförd(ActionEvent e){
frame.setVisible(falsk);
}
});panel.add (btn);
frame.add (panel);
frame.setDefaultCloseOperation (WindowConstants. EXIT_ON_CLOSE);
frame.setSize(250, 150);
frame.setVisible(Sann);
}
offentligstatisktomhethuvud(Sträng[] args){
ny JFrameApp();
}
}
Koden ovan skapar följande dialogruta:
Koden använder standard JFrame-konstruktorn och flera välbekanta metoder, såsom setTitle() metod (används i JDialog-appen ovan). Ett obekant objekt i programmet ovan är JPanel, som är en generisk behållare. Detta ger JFrame flexibiliteten att lägga till flera layouter och komponenter till en ram.
De ActionListener() och actionPerformed() metoder hanterar händelsen där en användare klickar på OK knapp.
Vilken Java-klass är bäst för att skapa dialogrutor?
Det enda syftet med klassen JOptionPane är att göra processen för att skapa dialogrutor mer bekväm för Java-utvecklare. Men om du behöver en mer anpassad dialogruta är JDialog-klassen det näst bästa alternativet.
Klassen JFrame skapar användargränssnitt, men du kan använda den för att skapa många olika element i ett grafiskt användargränssnitt, inklusive dialogrutor.
Dialogrutan som skapas med JFrame-klassen har en minimerad ikon, medan de andra inte har det. Om du vill ha en modal dialogruta som användaren måste agera innan han slutför en uppgift, så är JFrame inte det bästa tillvägagångssättet.
Hur man skriver din första Java GUI-applikation
Läs Nästa
Relaterade ämnen
- Programmering
- Programmering
- Java
- Handledning för kodning
Om författaren

Kadeisha Kean är en full-stack mjukvaruutvecklare och teknisk/teknikskribent. Hon har den distinkta förmågan att förenkla några av de mest komplexa tekniska koncepten; producera material som lätt kan förstås av alla nybörjare. Hon brinner för att skriva, utveckla intressant programvara och att resa runt i världen (genom dokumentärer).
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera