Ինչպես ստեղծել երկխոսության տուփեր Java-ում
The Dialog Box-ը պարզ, բայց ընդհանուր UI բաղադրիչ է, և Java-ն թույլ է տալիս ստեղծել դրանք մեկից ավելի եղանակներով:
Երկխոսության տուփի հիմնական գործառույթն այն է, որ հավելվածը կամ կայքը օգտատիրոջից որոշ մուտքեր վերցնի: Այդ մուտքագրումը կարող է լինել հաստատում, որ նրանք կարդացել են հաղորդագրություն կամ ինչ-որ բան, որը նրանք մուտքագրել են տեքստային տարածք:
Երկխոսության տուփը անմիջապես գրավում է օգտագործողի ուշադրությունը: Դա կատարյալ գործիք է կարևոր տեղեկություններ հավաքելու կամ ցուցադրելու համար:
Java-ն բազմազան լեզու է, որն ապահովում է մի քանի դասեր երկխոսության տուփեր ստեղծելու համար: Այս դասերը ներառում են JOptionPane, JDialog և JFrame:
JOptionPane դաս
Դուք կարող եք ստեղծել ստանդարտ երկխոսության տուփ՝ օգտագործելով JOptionPane դասին պատկանող մի քանի ստատիկ մեթոդներից մեկը: Դրանք ներառում են.
- showMessageDialog(), որը հաղորդագրություն է փոխանցում օգտվողին:
- showConfirmDialog(), որը տալիս է հարց, որը պահանջում է հաստատում:
- showInputDialog(), որը օգտատիրոջը խնդրում է մուտքագրել:
- showOptionDialog(), որը երեք այլ մեթոդների համակցություն է:
JOptionPane երկխոսության տուփի ստեղծում
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class JOptionPaneApp {
JOptionPaneApp() {
JFrame frame = new JFrame();
JOptionPane.showMessageDialog(frame, "This is a JOptionPane message window.");
}
public static void main(String[] args) {
new JOptionPaneApp();
}
}
Վերոնշյալ կոդը ստեղծում է հետևյալ երկխոսության տուփը.
Չնայած JOptionPane-ն ապահովում է ստանդարտ երկխոսության տուփեր, այն ունի բազմաթիվ տարբերակներ, որոնք թույլ են տալիս կսմթել իր վարքագիծը: Օրինակ, հաղորդագրության երկխոսությունը կարող է ունենալ մի քանի տեսակներից մեկը: Վերոնշյալը INFORMATION_MESSAGE-ի օրինակ է, որը լռելյայն է: Հաղորդագրությունների մյուս տեսակներն են.
- ERROR_MESSAGE
- WARNING_MESSAGE
- QUESTION_MESSAGE
- PLAIN_MESSAGE
Սխալի հաղորդագրության ստեղծում
Ահա ձեր JOptionPane երկխոսության համար հաղորդագրության այլ տեսակ օգտագործելու օրինակ.
JOptionPane.showMessageDialog(frame, "This is a JOptionPane error message window.",
"Error", JOptionPane.ERROR_MESSAGE);
Փոխարինեք սկզբնական ծրագրի showMessageDialog() տողը վերևի կոդի տողով, և կտեսնեք հետևյալ սխալի երկխոսությունը.
JDialog դաս
JDialog դասը թույլ է տալիս ստեղծել անհատական երկխոսության տուփեր: Այս Java դասը պատկանում է javax.swing փաթեթին և ընդլայնում է Dialog դասը: Այն հասանելի է ուղղակի և անուղղակի մեթոդների լայն տեսականի: Այս Java դասը ունի ընդհանուր առմամբ 16 Java կոնստրուկտոր:
Բացի լռելյայն կոնստրուկտորից, 15 մյուսներից յուրաքանչյուրը վերցնում է շրջանակ, պատուհան կամ երկխոսություն մի քանի այլ արգումենտների համադրությամբ:
Առաջնային JDialog կոնստրուկտորները ներառում են.
- JDialog()-ը ստեղծում է երկխոսության տուփ առանց շրջանակի, վերնագրի կամ ռեժիմի:
- JDialog (Երկխոսության սեփականատեր, լարային վերնագիր, բուլյան մոդալ) ստեղծում է երկխոսության տուփ երկխոսության տիրույթի, տողի վերնագրի և ռեժիմի հետ:
- JDialog (Շրջանակի սեփականատեր, լարային վերնագիր, բուլյան մոդալ) ստեղծում է երկխոսության տուփ շրջանակի սեփականատիրոջ, տողի վերնագրի և ռեժիմի հետ:
- JDialog (Window սեփականատեր, String title, boolean modal) ստեղծում է երկխոսության տուփ պատուհանի սեփականատիրոջ, տողի վերնագրի և ռեժիմի հետ:
JDialog երկխոսության տուփի ստեղծում
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.WindowConstants;
public class JDialogApp {
JDialogApp() {
JFrame frame = new JFrame();
JDialog dialog = new JDialog(frame, true);
dialog.setLayout(new FlowLayout());
JLabel displayText = new JLabel("This is a JDialog window.");
JButton btn = new JButton("OK");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.setVisible(false);
}
});
dialog.add(displayText);
dialog.add(btn);
dialog.setSize(200,150);
dialog.setTitle("Dialog Window");
dialog.setVisible(true);
dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
}
public static void main(String args[]) {
new JDialogApp();
}
}
Վերոնշյալ կոդը ստեղծում է հետևյալ երկխոսության տուփը.
Կան օրենսգրքի մի քանի կարևոր ասպեկտներ, որոնք դուք պետք է ուշադրություն դարձնեք: Ծրագիրն օգտագործում է JDialog (Frame սեփականատեր, Բուլյան մոդալ) կոնստրուկտոր, որին փոխանցում է JFrame և «true» արժեքը որպես արգումենտ: JFrame-ը JDialog-ի սեփականատերն է, ինչը նշանակում է, որ այն պատասխանատու է երկխոսության տուփի ցուցադրման համար: «Ճշմարիտ» արժեքը նշանակում է, որ երկխոսությունը արգելափակում է մուտքը այլ հարակից պատուհաններ, երբ այն ցուցադրվում է:
Վերոնշյալ կոդի կոնստրուկտորը վերնագիր չի ընդունում որպես իր արգումենտ: Այնուամենայնիվ, շրջանակի սեփականատերը վերնագիր է պահանջում: Այսպիսով, այդ առաջադրանքի համար կարող եք օգտագործել setTitle() մեթոդը, որը հասանելի է JDialog ընդլայնված Dialog դասի միջոցով: Կոդի մյուս կարևոր մեթոդներն են setVisible(), setSize() և setDefaultCloseOperation():
setVisible-ը վերցնում է բուլյան արժեք և պատասխանատու է շրջանակի ցուցադրման համար: setSize-ը վերցնում է երկխոսության պատուհանի բարձրությունը և լայնությունը: setDefaultCloseOperation-ը վերցնում է երեք արժեքներից մեկը՝ որոշելու, թե ինչ է տեղի ունենում, երբ օգտատերը փակում է երկխոսությունը:
JFrame Class
JDialog-ը և JOptionPane-ը երկուսն էլ օգտագործում են JFrame դասը՝ երկխոսության տուփեր ստեղծելու համար: Այնուամենայնիվ, JFrame դասը կարող է ինքնուրույն ստեղծել երկխոսության տուփեր: JFrame դասը ընդլայնում է Frame դասը և, ինչպես JDialog դասը, թույլ է տալիս ստեղծել անհատական երկխոսության տուփեր։
JFrame-ն ունի չորս կոնստրուկտոր և մի քանի ուղղակի և անուղղակի մեթոդներ, որոնք դուք պետք է օգտագործեք երկխոսության տուփ ստեղծելու համար:
JFrame երկխոսության տուփի ստեղծում
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.WindowConstants;
public class JFrameApp {
JFrameApp() {
JFrame frame = new JFrame();
frame.setTitle("Dialog Window");
JPanel panel = new JPanel();
JLabel displayText = new JLabel("This is a JFrame window.");
panel.add(displayText);
JButton btn = new JButton("OK Button");
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
frame.setVisible(false);
}
});
panel.add(btn);
frame.add(panel);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(250, 150);
frame.setVisible(true);
}
public static void main(String[] args) {
new JFrameApp();
}
}
Վերոնշյալ կոդը ստեղծում է հետևյալ երկխոսության տուփը.
Կոդն օգտագործում է լռելյայն JFrame կոնստրուկտորը և մի քանի ծանոթ մեթոդներ, ինչպիսիք են setTitle() մեթոդը (օգտագործվում է վերևում JDialog հավելվածում): Վերևի ծրագրում անծանոթ օբյեկտ է JPanel-ը, որը ընդհանուր կոնտեյներ է: Սա JFrame-ին տալիս է շրջանակի վրա մի քանի դասավորություններ և բաղադրիչներ ավելացնելու ճկունություն:
ActionListener() և actionPerformed() մեթոդները կարգավորում են այն իրադարձությունը, երբ օգտատերը սեղմում է OK կոճակը:
Ո՞ր Java դասն է լավագույնը երկխոսության տուփեր ստեղծելու համար:
JOptionPane դասի միակ նպատակը երկխոսության տուփի ստեղծման գործընթացն ավելի հարմար դարձնելն է Java ծրագրավորողների համար: Այնուամենայնիվ, եթե ձեզ ավելի հարմարեցված երկխոսության տուփ է անհրաժեշտ, JDialog դասը հաջորդ լավագույն տարբերակն է:
JFrame դասը ստեղծում է միջերեսներ, բայց դուք կարող եք օգտագործել այն GUI-ի շատ տարբեր տարրեր, ներառյալ երկխոսության տուփեր ստեղծելու համար:
JFrame դասի հետ ստեղծված երկխոսության տուփն ունի նվազագույնի հասցված պատկերակ, մինչդեռ մյուսները չունեն: Եթե ցանկանում եք մոդալ երկխոսության տուփ, որ օգտագործողը պետք է գործի նախքան առաջադրանքը կատարելը, ապա JFrame-ը լավագույն մոտեցումը չէ: