Пользовательская кнопка на JOptionPane не работает? - PullRequest
0 голосов
/ 30 января 2012

Я добавил свои собственные JPanel и JButton в JOptionPane, как показано ниже. Когда я нажимаю кнопку «ОК», ничего не появляется. Есть ли альтернатива этому? я хочу просто получить имя пользователя и пароль, но с моей кнопкой не по умолчанию из JOptionpane. Может ли кто-нибудь увидеть, что не так с этим кодом?

final WebTextField user = new WebTextField();
    final WebPasswordField password = new WebPasswordField();
    WebButton ok = new WebButton("OK");
    ok.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    System.out.println("Zip file exist, continuing with extraction of zip file");
                }
            });

        }
    });
    WebButton cancel = new WebButton("Cancel");
    WebPanel panel = new WebPanel(new GridLayout(2, 2));
    panel.setOpaque(false);
    panel.add(new WebLabel("User:"));
    panel.add(user);
    panel.add(new WebLabel("Password:"));
    panel.add(password);

    try {
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    } catch (InstantiationException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    } catch (IllegalAccessException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    } catch (UnsupportedLookAndFeelException e) {
        e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
    }
    UIManager.put("OptionPane.background", Color.WHITE);
    UIManager.put("Panel.background", Color.WHITE);

    int o =JOptionPane.showOptionDialog(bcfiDownloadPanel,
            new Object[]{panel},
            "Authorization Required",
            JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.INFORMATION_MESSAGE,
            null,
            new WebButton[]{new WebButton("OK"), new WebButton("Cancel")}, // this is the array
            "default"
    );

1 Ответ

1 голос
/ 30 января 2012

Это довольно необычная JOptionPane, хотя ... Я надеюсь, что WebButton - это то, что расширяет JButton;

int o =JOptionPane.showOptionDialog(bcfiDownloadPanel,
        new Object[]{panel},
        "Authorization Required",
        JOptionPane.OK_CANCEL_OPTION,
        JOptionPane.INFORMATION_MESSAGE,
        null,
        new WebButton[]{new WebButton("OK"), new WebButton("Cancel")}, // this is the array
        "default"

... так что, как и для любого JButton, вы должны добавить к нему прослушиватель действий, чтобы он соответствовал событию щелчка и т. Д .;

измените ваш код следующим образом:

int o =JOptionPane.showOptionDialog(bcfiDownloadPanel,
            new Object[]{panel},
            "Authorization Required",
            JOptionPane.OK_CANCEL_OPTION,
            JOptionPane.INFORMATION_MESSAGE,
            null,
            new WebButton[]{this.ok, this.cancel}, // this is the array
            "default"

Отчет, который помогает

Удачи

...