2013-09-25 2 views
1

У меня есть поле со списком с малым, средним и большим размерами. Эти свойства и хотят применить ...Устанавливать элементы в комбинированный блок в JAVA

Строки переменной Pattern имеет значение Small, Medium, Large и это добавить в поле со списком Barsize

Во время работы этого файла Java, если я выбираю Medium опцию был выбран, а также свойство было применено, но если я запустил еще раз, он переходит к опции Small в индексе поля со списком.

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

Кодирование ........

propertiesPanel.add(new JLabel("Barsize")) 
BarField = new JComboBox(pattern) 
propertiesPanel.add(BarField) 

Здесь шаблон имеет значение Small, Medium, и Large ......

+0

Примечание вы говорите *, это добавляет в поле со списком Barsize *, но поле со списком в вашем коде называется 'barField'. – dic19

ответ

0

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

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

Что-то вроде этого:

public class SizeProperties { 

    private static SizeProperties _instance; 
    private Sizes _selectedSize; 

    public enum Sizes{SMALL, MEDIUM, LARGE} 

    private SizeProperties(){ 
     _selectedSize = Sizes.SMALL; 
    } 

    public static SizeProperties getInstance(){ 
     if(_instance == null){ 
      _instance = new SizeProperties(); 
     } 
     return _instance; 
    } 

    public Sizes getSelectedSize(){ 
     return _selectedSize; 
    } 

    public void setSelectedSize(Sizes size){ 
     _selectedSize = size; 
    } 
} 

В вашем диалоге вы можете заполнить выпадающий следующим образом:

JComboBox barField = new JComboBox(); 
for(SizeProperties.Sizes s : SizeProperties.Sizes.values()){ 
    barField.addItem(s); 
} 
barField.setSelectedItem(SizeProperties.getInstance().getSelectedSize()); 

Наконец, чтобы сохранить выбранный размер в вашем одноплодной класса:

SizeProperties.Sizes selectedSize = (SizeProperties.Sizes) barField.getSelectedItem(); 
SizeProperties.getInstance().setSelectedSize(selectedSize); 
+0

В этой строке public enum Размеры {SMALL, MEDIUM, LARGE} error rasied as. Элемент перечисления Размеры должны быть определены внутри статического типа элемента. что делать сейчас ... –

+0

Хотите изменить класс на статичный .... мы исправили ... спасибо, много ...... –

+0

@RasaMohamed В моем спешке я забыл добавить модификаторы 'static'. Извини за это. Обратите внимание, что нет необходимости создавать «enum» static, вам просто нужно указать имя класса, в котором определено это перечисление: например, 'SizeProperties.Sizes.values ​​()'. См. Обновленный ответ. Если это сработало для вас, пожалуйста, не забудьте принять ответ. См. [Как принимается ответная работа] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – dic19

Смежные вопросы