Java Swing - пример JOptionPane showConfirmDialog

Java Swing - пример JOptionPane showConfirmDialog

Это обзор методаshowConfirmDialog() классаJOptionPane. Этот метод - быстрый и простой способ получить данные от пользователя, задав подтверждающий вопрос, например да / нет / отмена. showConfirmDialog() можно вызвать с помощью следующих комбинаций параметров:

Component, Object
Component, Object, String, int
Component, Object, String, int, int
Component, Object, String, int, int, Icon
  1. Компонент - первый параметр - это компонент, который определяет фрейм, в котором отображается диалог; если null, или еслиparentComponent не имеет фрейма, используется фрейм по умолчанию.

  2. Объект - вторым параметром может быть любой объект. (In some older versions of Java you might get a compiler error when using primitive types directly)

  3. String - Третий параметр - это строка, помещенная в заголовок окна confirmDialog.

  4. int - int, следующий за строкой, - этоOptionType. РазличныеOptionTypes дляJOptionPane:

    • DEFAULT_OPTION

    • YES_NO_OPTION

    • YES_NO_CANCEL_OPTION

    • OK_CANCEL_OPTION

  5. int - Следующим int являетсяMessageType. РазличныеMessageTypes дляJOptionPane:

    • СООБЩЕНИЕ ОБ ОШИБКЕ

    • INFORMATION_MESSAGE

    • ПРЕДУПРЕЖДЕНИЕ

    • QUESTION_MESSAGE

    • PLAIN_MESSAGE

  6. Значок - последний параметр - этоIcon, который отображается внутри диалогового окна и заменяет значок по умолчаниюMessageType.

1. Компонент и объект

Самый простой способ получить ввод пользователя. showConfirmDialog() вызовет диалоговое окно с опциями «Да», «Нет» и «Отмена» и заголовком «Выберите вариант»:

ConfirmDialog1.java

package com.techfou.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog1 {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null, "Do you like bacon?");
        // 0=yes, 1=no, 2=cancel
        System.out.println(input);

    }
}

Выход:

swing-comfirm-dialog-2a

2. Компонент, объект, строка и интервал

Добавление дополнительной информации в диалоговое окно подтверждения. В этом примере мы можем выбрать заголовок диалога, а такжеoptionType. DEFAULT_OPTION имеет только кнопку «ОК». Эта форма диалогового окна подтверждения эквивалентна простомуshowMessageDialog(), но дает нам возможность получать вводимые пользователем данные.

ConfirmDialog2a.java

package com.techfou.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog2a {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null,
                "Click ok if you are ok", "Be ok!", JOptionPane.DEFAULT_OPTION);
        // 0=ok
        System.out.println(input);

    }
}

Выход:

swing-comfirm-dialog-2b

Еще один простой пример с использованием YES_NO_CANCEL_OPTION:

ConfirmDialog2b.java

package com.example.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog2b {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null,
                "Do you want to proceed?", "Select an Option...",JOptionPane.YES_NO_CANCEL_OPTION);

    // 0=yes, 1=no, 2=cancel
    System.out.println(input);

    }
}

Выход:

swing-comfirm-dialog-2c

3. Компонент, объект, строка, int и int

Дайте диалог подтверждения со значком ошибки:

ConfirmDialog3.java

package com.example.confirmDialog;

import javax.swing.JOptionPane;

public class ConfirmDialog3 {

    public static void main(String[] args) {

        int input = JOptionPane.showConfirmDialog(null, "Do you want to proceed?", "Select an Option...",
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.ERROR_MESSAGE);

    // 0=yes, 1=no, 2=cancel
    System.out.println(input);

    }
}

Выход:

swing-comfirm-dialog-2d

4. Компонент, объект, строка, интервал, интервал и значок

Сделайте ваш диалог подтверждения «красивее». Пример сIcon, полученным из каталога:

ConfirmDialog4a.java

package com.example.confirmDialog;

import javax.swing.ImageIcon;
import javax.swing.JOptionPane;

public class ConfirmDialog4a {

    public static void main(String[] args) {

        ImageIcon icon = new ImageIcon("src/images/turtle64.png");
    int input = JOptionPane.showConfirmDialog(null, "Do you like turtles?", "Be honest...",
            JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, icon);

        // 0=yes, 1=no, 2=cancel
    System.out.println(input);

    }
}

Выход:

swing-comfirm-dialog-2e

Пример сComponent, установленным наframe:

ConfirmDialogInFrame.java

package com.example.confirmDialog;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import java.awt.Color;

public class ConfirmDialogInFrame extends JFrame{

    public ConfirmDialogInFrame() {
        getContentPane().setBackground(Color.DARK_GRAY);
        setTitle("Confirm Dialog in Frame");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
        setResizable(false);
        setSize(400, 300);
        getContentPane().setLayout(null);
    }

    public static void main(String[] args){
        ImageIcon icon = new ImageIcon("src/images/turtle64.png");
        int input = JOptionPane.showConfirmDialog(new ConfirmDialogInFrame(),
                "I appear as part of the frame!!", "Customized Dialog",
                JOptionPane.OK_CANCEL_OPTION, JOptionPane.INFORMATION_MESSAGE, icon);

        // 0=ok, 2=cancel
        System.out.println(input);
    }
}

Выход:

swing-comfirm-dialog-2f

5. Более сложный пример

В этом примере мы передаемJPanel в качестве параметра Object. JPanel настраивается, и к нему добавляетсяJLabel. Мы также манипулируем размеромOptionPane с помощью вызоваUIManager.

ConfirmDialogPanel.java

package com.example.messageDialog;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.UIManager;

public class ConfirmDialogPanel {

    public static void main(String[] args) {

        ImageIcon icon = new ImageIcon("src/images/lock64.png");

        JPanel panel = new JPanel();
        panel.setBackground(new Color(102, 205, 170));
        panel.setSize(new Dimension(200, 64));
        panel.setLayout(null);

        JLabel label1 = new JLabel("This file requires administrator rights.");
        label1.setVerticalAlignment(SwingConstants.BOTTOM);
        label1.setBounds(0, 0, 200, 32);
        label1.setFont(new Font("Arial", Font.BOLD, 10));
        label1.setHorizontalAlignment(SwingConstants.CENTER);
        panel.add(label1);

        JLabel label2 = new JLabel("Are you sure you want to continue?");
        label2.setVerticalAlignment(SwingConstants.TOP);
        label2.setHorizontalAlignment(SwingConstants.CENTER);
        label2.setFont(new Font("Arial", Font.BOLD, 10));
        label2.setBounds(0, 32, 200, 32);
        panel.add(label2);

        UIManager.put("OptionPane.minimumSize", new Dimension(300, 120));
        int input = JOptionPane.showConfirmDialog(null, panel, "Admin Rights Confirmation",
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, icon);

        // 0=yes, 1=no, 2=cancel
        System.out.println(input);

    }

}

Выход:

swing-comfirm-dialog-2g