У меня есть приложение 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, который я создал и изменил размер. И вот скриншот: