как совместить joptionpane с combobox - PullRequest
0 голосов
/ 25 мая 2019

Я хочу, чтобы мой joption можно было комбинировать с выпадающим списком, а данные этого выпадающего списка находятся в базе данных, как мне это удалось.

Я пытался измениться, но красный код всегда показывает

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String wel = sdf.format(cal1.getDate());
            String NamaFile = "/report/harianMasuk.jasper";
            HashMap hash = new HashMap();
      String tak = JOptionPane.showOptionDialog(null,id.getSelectedIndex()-1,"Laporan Supplier",JOptionPane.QUESTION_MESSAGE);
 try {
                  hash.put("til", wel);
               hash.put("rul", tak);  
               runReportDefault(NamaFile, hash);
           } catch (Exception e) {
               JOptionPane.showMessageDialog(rootPane, e);
           }

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Прочтите раздел из учебного пособия по Swing на Получение пользовательского ввода из диалогового окна .

В нем показано, как отобразить поле со списком в JOptionPane.

0 голосов
/ 26 мая 2019

Не совсем точно, что вы пытаетесь достичь, но, похоже, вы хотите использовать JComboBox в диалоговом окне JOptionPane .Этот ComboBox будет заполнен конкретными данными из вашей базы данных.Пользователь должен выбрать из этого ComboBox, и ваше приложение продолжает обработку на основе этого выбора.Если это так, то вы можете попробовать что-то вроде этого:

String selectedItem = "";
int selectedItemIndex = -1;

/* Ensure dialog never hides behind anything (use if
   the keyword 'this' can not be used or there is no 
   object to reference as parent for the dialog).   */
JFrame iframe = new JFrame();
iframe.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
iframe.setAlwaysOnTop(true);
// ---------------------------------------------------

int btns = JOptionPane.OK_CANCEL_OPTION;

String dialogMessage = "<html>Select the desired item from the Drop-Down "
        + "list<br>you want to work with:<br><br></html>";
String dialogTitle = "Your Fav Items";
/* Up to you to gather what you want placed into the
   JComboBox that will be displayed within the JOptionPane. */
String[] comboBoxItems = {"Your", "DB", "Items", "You", "Want", "To",
    "Add", "To", "ComboBox"};
BorderLayout layout = new BorderLayout();
JPanel topPanel = new JPanel(layout);
JLabel label = new JLabel(dialogMessage);
topPanel.add(label, BorderLayout.NORTH);
JPanel centerPanel = new JPanel(new BorderLayout(5, 5));
JComboBox cb = new JComboBox();
cb.setModel(new DefaultComboBoxModel<>(comboBoxItems));
cb.setSelectedIndex(-1);
centerPanel.add(cb, BorderLayout.CENTER);
topPanel.add(centerPanel);

// Ensure a selection or Cancel (or dialog close)
while (selectedItemIndex < 0) {
    int res = JOptionPane.showConfirmDialog(iframe, topPanel, dialogTitle, btns);
    if (res == 2) {
        selectedItem = "Selection Option Was Canceled!";
        break;
    }
    selectedItemIndex = cb.getSelectedIndex();
    if (res == JOptionPane.OK_OPTION) {
        if (selectedItemIndex == -1) {
            JOptionPane.showMessageDialog(iframe, "<html>You <b>must</b> "
                    + "select something or select <font color=red><b>Cancel</b></font>.",
                      "Invalid Selection...", JOptionPane.WARNING_MESSAGE);
        }
        else {
            selectedItem = cb.getSelectedItem().toString();
        }
    }
    iframe.dispose();
}
JOptionPane.showMessageDialog(iframe, "<html>You selected the ComboBox item:"
        + "<br><br><b><font color=blue><center>" + selectedItem + "</center>"
        + "</font></b><br></html>", "Selected Item", JOptionPane.INFORMATION_MESSAGE);
iframe.dispose();

С приведенным выше кодом диалоговое окно ввода, которое будет отображаться, будет выглядеть примерно так:

enter image description here

enter image description here

Вам решать, как заполнить comboBoxItems Используемый массив строкв коде выше.

...