2012-04-30 2 views
0

Я пытаюсь создать экран меню, и я хочу, чтобы его можно было создать и любые дальнейшие перестановки его динамически. Я создал вспомогательный класс MenuItem для обработки отображаемых элементов меню, и он считывает имя, изображение и устанавливает следующее состояние (то, что обрабатывается позже). Я хочу знать, как я могу создать следующие следующие экраны (все они будут подклассом моего класса Screen)?Создайте подклассы родительского класса из файла

Каков наиболее эффективный метод передачи определенных объектов в элементы меню? Нужно ли предварительно создавать каждый возможный экран, а затем просто читать его в сериализованной форме, или я могу создать их динамически. Я надеялся, что смогу сделать что-то столь же простое, как чтение в буквальной строке «новый SubClass (...)» и действовать, но я не знаю, как это сделать. Любые другие предложения были бы замечательными!

+1

Try проводки некоторый код (лучше даже опубликовать SSCCE http://sscce.org) или хотя бы некоторый псевдокод, потому что я не могу понять, что вы говорите. –

+0

Можете ли вы опубликовать свой код класса экрана? – eabraham

+1

Какое приложение вы разрабатываете? Приложение AWT? Свинг? Webapp? –

ответ

0

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

Итак, извлеките интерфейс команды «экран» в интерфейс. Например:

public interface ScreenDisplayer { 
    void displayScreen(Screen mainScreen); 
} 

Затем построить Map<String, ScreenDisplayer>:

map.put("screen1", new ScreenDisplayer() { 
    @Override 
    void displayScreen(Screen mainScreen) { 
     // TODO display screen 1 
    }); 
// same for all the other commands 

И когда "пункт меню" нажата, получить DisplayScreen с карты и назвать его:

String command = selectedMenuItem.getCommand(); 
ScreenDisplayer displayer = map.get(command); 
displayer.displayScreen(mainScreen); 
+0

В принципе, мне просто интересно, в этот момент, как указать каждая команда? Все, что я хочу сделать, это конкретный конструктор подкласса и динамически давать его аргументы (предпочтительно от String).

 new,./CatchEm/imgs/new.png,new constructor,1 load,./CatchEm/imgs/load.png,load constructor,1 options,./CatchEm/imgs/options.png,options constructor,1 exit,./CatchEm/imgs/exit.png,null,0 
будет примером текстового файла, который я прочитал, с запятой в качестве разделителя – tmoss

+0

При втором осмотре я определенно чрезмерно усложняю проблему. То, что я ищу, в основном можно суммировать в 7 или 8 команд.Итак, возможно, перечисление, содержащее ScreenDisplayers или только второй вспомогательный класс, чтобы содержать их все? Или, вы не правы, карта работает отлично – tmoss

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