Настроить диалог JOptionPane

Я учусь Java качели. Приведенный ниже код является блоком catch, который обрабатывает IOException и показывает сообщение об ошибке.

 catch(IOException e)
    {
        System.out.println("IOException");
        JOptionPane.showMessageDialog(null,"File not found",null,
                                    JOptionPane.ERROR_MESSAGE);
    }

Я думал о том, чтобы объявить и настроить собственный JOptionPane внутри блока catch, как показано ниже:

JOptionPane jop=new JOptionPane();
        jop.setLayout(new BorderLayout());
        JLabel im=new JLabel("Java Technology Dive Log",
                new ImageIcon("images/gwhite.gif"),JLabel.CENTER);
        jop.add(im,BorderLayout.NORTH);
        jop.setVisible(true);

Но проблема в том, что я не знаю, как заставить его появляться на экране, как это делает метод showMessageDialogue. Пожалуйста помоги. Заранее спасибо.

 RNJ02 сент. 2012 г., 11:39
Почему бы не использовать JWindow с JPanel и т. Д. Внутри? Если вы настраиваете его много, то вам не нужно много усилий делать все самостоятельно. И тогда у вас есть полный контроль

Ответы на вопрос(3)

Решение Вопроса

Вы можете просто добавить свои компоненты вJPanel а затем добавить этоJPanel на вашJOptionPane, как показано в этом небольшом примере:

import java.awt.*;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.swing.*;
import javax.imageio.ImageIO;

public class JOptionPaneExample {

    private void displayGUI() {
        JOptionPane.showConfirmDialog(null,
                        getPanel(),
                        "JOptionPane Example : ",
                        JOptionPane.OK_CANCEL_OPTION,
                        JOptionPane.PLAIN_MESSAGE);
    }

    private JPanel getPanel() {
        JPanel panel = new JPanel();
        JLabel label = new JLabel("Java Technology Dive Log");
        ImageIcon image = null;
        try {
            image = new ImageIcon(ImageIO.read(
                    new URL("http://i.imgur.com/6mbHZRU.png")));
        } catch(MalformedURLException mue) {
            mue.printStackTrace();
        } catch(IOException ioe) {
            ioe.printStackTrace();
        } 

        label.setIcon(image);
        panel.add(label);

        return panel;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new JOptionPaneExample().displayGUI();
            }
        });
    }
}
 02 сент. 2012 г., 16:54
Вы САМЫЙ ДОБРО ПОЖАЛОВАТЬ и ПРОДОЛЖАЕТЕ УЛЫБАТЬСЯ :-). Вы действительно можете добавить свойJPanel к любому из методовJOptionPaneи делать все, что вы хотите сделать сLayout чтобы удовлетворить ваши потребности :-)
 09 окт. 2014 г., 03:01
С использованиемgetPanel метод, есть ли разница, если я использую inputDialog, messageDialog или verifyDialog?
 Victor Mukherjee02 сент. 2012 г., 14:59
showConfirmDialog, это метод, который я искал. Еще раз спасибо.
 09 окт. 2014 г., 03:39
@ Патрик: На самом деле разница будет компонентами по умолчанию, которые вы получаете с каждой формойJOptionPane, лайкmessageDialog обеспечит одну, единственную кнопкуOK по умолчанию. «inputDialog` предоставитJTextField, Ok а такжеCANCEL кнопка. В зависимости от требований одного варианта использования может показаться, что вы выбираете тот, который лучше всего соответствует потребностям. Просто используйте общий метод для всехJOptionPanes,JOptionPane.show"Message/Input/Confirm"Dialog(null, getPanel())Даст одна идея.

Я думаю, это зависит от того, что не так сJOptionPaneshowMessageDialog(Component parentComponent, Object message, String title, int messageType, Icon icon)?

JOptionPane.showMessageDialog(null, "Java Technolgy Dive Log", "Dive", JOptionPane.INFORMATION_MESSAGE, new ImageIcon("images/gwhite.gif"));

Dialog

 18 июн. 2015 г., 12:46
Я хотел бы знать, что не так с этим ответом, который в одной строке может сделать в основном то, о чем просит опера
 26 февр. 2014 г., 20:26
Вы должны удивляться слепым голосам. Не могли бы вы разъяснить мне, почему вы чувствовали необходимость понизить голосование, чтобы мы все могли понять, почему этот вопрос вас не устраивает?
JOptionPane jop = new JOptionPane();
JDialog dialog = jop.createDialog("File not found");
dialog.setLayout(new BorderLayout());
JLabel im = new JLabel("Java Technology Dive Log", new ImageIcon("images/gwhite.gif"), JLabel.CENTER);
dialog.add(im, BorderLayout.NORTH);
dialog.setVisible(true);

Ваш ответ на вопрос