Ինչպես ստեղծել երկխոսության տուփեր 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-ը լավագույն մոտեցումը չէ: