Изменение размера списка в JOptionPane - PullRequest
0 голосов
/ 27 октября 2019

У меня есть приложение Swing, в котором я пытаюсь открыть диалоговое окно, чтобы пользователь мог выбрать элементы из списка. Я думал, что самый простой способ сделать это будет использовать JOptionPane. Проблема в том, что размер по умолчанию для диалога очень мал. Список, который я хочу отобразить, содержит более 20 элементов и должен иметь несколько вариантов выбора. Размер по умолчанию для JOptionPane имеет достаточно места для отображения 4 элементов, что слишком мало для моих нужд.

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

Вот код для моей пользовательской панели JOptionPane:

public class JEnhancedOptionPane extends JOptionPane
{
    public static int showOptionDialog(Component parentComponent, List message, String title, int optionType, int messageType, Icon icon, Object[] selectionValues, 
            Object initialSelectionValue) {

        JOptionPane pane = new JOptionPane(message, messageType, optionType, icon, selectionValues, initialSelectionValue);

        pane.setInitialValue(initialSelectionValue);
        pane.setComponentOrientation(((parentComponent == null) ?
            getRootFrame() : parentComponent).getComponentOrientation());

        JDialog dialog = pane.createDialog(parentComponent, title);

        pane.selectInitialValue();
        dialog.setSize(500, 500);
        dialog.setVisible(true);
        dialog.dispose();

        Object selectedValue = pane.getValue();

        if(selectedValue == null)
            return CLOSED_OPTION;
        if(selectionValues == null) {
            if(selectedValue instanceof Integer)
                return ((Integer)selectedValue).intValue();
            return CLOSED_OPTION;
        }
        for(int counter = 0, maxCounter = selectionValues.length;
            counter < maxCounter; counter++) {
            if(selectionValues[counter].equals(selectedValue))
                return counter;
        }
        return CLOSED_OPTION;
    }
}

Я в основном скопировал код из оригинальной панели JOptionPane и добавилвызовите setSize (). Метод вызывается так:

JEnhancedOptionPane.showOptionDialog(null, listOptions, "Test: ", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE, null, null, null);

Где listOptions - это Java.Awt.List, который я создал и изменил размер. И вот скриншот:

enter image description here

...