Здесь описано, как добавлять строки и столбцы. Возможно, вам придется перезагрузить / обновить элемент управления после добавления элементов.
Перечисления являются статическими вложенными классами, потому что они определяют статические членские переменные (перечислимые значения), и это запрещено для внутренних классов: http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.1.3
Обновление: Я просматривал JLS
(спецификация языка Java) для большего количества детали об ограничениях статических вложенных классов, и не нашел его (хотя это, вероятно, там, скрыто под другой темой). С чистой точки зрения реализации нет никакой причины, что это не могло быть сделано. Таким образом, я подозреваю, что это была проблема философии языка: это не должно быть сделано, поэтому не будет поддерживаться. Но я не был там, таким образом, это - чистое предположение.
Как комментарий: если Ваши методы являются достаточно большими, что они требуют своих собственных перечислений, то это - сильный знак, что Вам нужен рефакторинг.
Это странно, потому что Java, внутреннее определение класса говорит, что константы времени компиляции могут быть объявлены статичные, и член Перечисления, является постоянным явно временем компиляции, плюс перечисление статический класс, предположительно...
8.1.3 Внутренние классы и экземпляры включения
(...) Внутренние классы не могут объявить статических участников, если они не время компиляции постоянные поля.
class Outer{
class Inner extends HasStatic{
static final int x = 3; // ok - compile-time constant
static int y = 4; // compile-time error, an inner class
}
static class NestedButNotInner{
static int z = 5; // ok, not an inner class
}
interface NeverInner{} // interfaces are never inner
}
Я редко пишу любые типы в рамках метода, если это не анонимный внутренний класс. Можно, однако, записать вложенные перечисления:
public class NestedEnum
{
private enum MyEnum
{
X, Y, Z
}
public void foo()
{
}
}
Я не думаю, что действительно хотел бы прочитать метод, который объявил новый тип в нем - у Вас есть какая-либо конкретная причина желания объявить это в методе вместо так же, как вложенный тип? Я вижу, что "никакие другие методы не должны знать" аргумент, но я думаю, что комментарий может уладить это и все еще оставить больше читаемого кода.
http://mindprod.com/jgloss/enum.html дает хорошее описание перечислений Java - так же ранее упомянутый, перечисления определяются столь же статичные, таким образом, они не могут быть объявлены как местные жители
"Вложенные перечислимые типы неявно static. " 8.9 Enums
Разумно предположить, что вложенные перечисления неявно содержат модификатор статического доступа.