Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2010, 11:31   #1
ZigaZaga
Пользователь
 
Регистрация: 20.02.2010
Сообщений: 27
По умолчанию Swing . как ВООБЩЕ реализовать.

Добрый день.
пишу лабу.
к ней нужно подкрутить GUI.
весь мой интерфейс будет заключаться в одном JFrame.
т.е. запуская прогу пользователь видит, например, во фрейме приглашения залогиниться(т.е. это два-три JLabel, два JTextField, два JBUtton). после того как он логиниться. эти примитивы исчезают . и появляються другие примитивы но уже в зависимости от того, какие права у этого пользователя.
в общем так около 30 разных видов фрейма должно быть.

и вот теперь вопрос. как это удобно сделать?

как я понимаю надо объект JFrame сделать объектом основного класса.
и потом вызывать методы отрисовки видов фрейма.
и что бы это выглядело как-то так(ооччень приблизительно):

Код:
class Main {
	JFrame jf;
	public static void main(String [] argv){
		User user = lodining();
		switch(user.right){
		case USER{
			int what = usermenu();
			switch(what){
			.....
		}
		case ADMIN{...}
но как из методов, которые отрисовывают во фрейм, возвращать что-либо по нажатию кнопки.

Код:
User logining(){
	....
	JButton jb;
	....
	jb.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent ae){
			....
			// тут определяеться кто залогинился
			// но как отсюда вернуть этого Юзера????
		}
	});
}
в общем опыта нет. реально нужен совет как ВООБЩЕ это можно сделать.
заранее спасибо.
ZigaZaga вне форума Ответить с цитированием
Старый 07.06.2010, 18:11   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,619
По умолчанию

Сделай таблицу типов. Каждая страница - отдельный класс.
Пример - вот
Код:
import java.util.HashMap;
import java.util.Map;
import com.roywmiller.contacts.actions.Action;
import com.roywmiller.contacts.actions.AddContactAction;
import com.roywmiller.contacts.actions.BootstrapAction;
import com.roywmiller.contacts.actions.RemoveContactAction;

public class ActionFactory {
     protected Map map = defaultMap();
     
     public ActionFactory() {
          super();
     }
     public Action create(String actionName) {
          Class klass = (Class) map.get(actionName);
          if (klass == null)
               throw new RuntimeException(getClass() + " was unable to find 
               	an action named '" + actionName + "'.");
          
          Action actionInstance = null;
          try {
               actionInstance = (Action) klass.newInstance();
          } catch (Exception e) {
               e.printStackTrace();
          }

          return actionInstance;
     }
     protected Map defaultMap() {
          Map map = new HashMap();

          map.put("index", BootstrapAction.class);
          map.put("addContactAction", AddContactAction.class);
          map.put("removeContactAction", RemoveContactAction.class);

          return map;
     }
}
Если нужно подробнее - взято отсюда
Потом просто присваиваешь экземпляр нужного типа (нужной страницы) и просто вызываешь его методы отрисовки. Так ты не будешь парится, сколько у тебя страниц - 1 или 300. Потому что тут работает полиморфизм.

Последний раз редактировалось MaTBeu; 07.06.2010 в 18:14.
MaTBeu вне форума Ответить с цитированием
Старый 18.06.2010, 10:57   #3
leska
Пользователь
 
Регистрация: 22.04.2008
Сообщений: 13
По умолчанию

Я бы предложил подумать над дизайном программы.

Приглашение залогиниться может быть можно показать отдельным диалогом.

Для каждого типа фрейма -- отдельны класс как писали выше. От чего он наследоаться будет -- зависит от отрисовки. Обычно наследуют от JPanel и складывают туда все необходимые контролы. Затем через CardLayout можно менять панели.

ЗЫ. Я предположил, что отрисовка --- это не Graphics.
Хочешь начать карьеру фрилансера, но не знаешь как? Узнай здесь!
leska вне форума Ответить с цитированием
Старый 01.07.2010, 18:56   #4
Irrizunarma
 
Аватар для Irrizunarma
 
Регистрация: 25.06.2010
Сообщений: 2
По умолчанию Swing как ВООБЩЕ реализовать

да, можно и так, но я бы попробывал написать свою компоненту - может можно будет впихнуть какие-то дополнительные настройки/функционал.

Если надо и по вертикали, то зачем тебе вообще форма? используй канвас и рисуй где хочешь
Irrizunarma вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как установить плагин Visual Swing for Eclipse ArtiSoft Общие вопросы по Java, Java SE, Kotlin 1 05.05.2010 03:58
Поиск компонента Swing. profi Общие вопросы по Java, Java SE, Kotlin 1 15.04.2010 01:23
Swing и Delphi java_java_java Общие вопросы по Java, Java SE, Kotlin 3 05.09.2009 11:14
Помогите пожалуйста! Я вообще в этом чайник! Мне нужна подсказка есть ли такое вообще???? Виктория010203 Помощь студентам 3 31.07.2009 22:52
как это работает и что оно вообще такое? kievlyanin Microsoft Office Excel 9 08.07.2009 14:33