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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2012, 17:49   #1
_Денис
Пользователь
 
Аватар для _Денис
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию ActionListener в ActionListener

Надеюсь с веткой форума угадал.

Итак опыт работы с Явой 2 дня.
Делаю человеку курсовую работу. Нужно смоделировать работу аэропорта.
GUI на Swinge

Немного контекста: есть панелька на которой расположены кнопки разных действий (Зарегистрировать рейс, разрешить посадку, разрешить взлёт и т.д). При нажатии на кнопку для примера "Зарегистрировать рейс" ниже должна появиться формочка для ввода данных и кнопка "Добавить".

Нижу привожу код обработчика события нажатия на кнопку "Зарегистрировать рейс"


Код:
btnRegister.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				GridBagLayout gbLayout = (GridBagLayout) inputDataPanel.getLayout();
				inputDataPanel.removeAll();
				GridBagConstraints c = new GridBagConstraints();
				c.gridx = 0;
				c.gridy = 0;
				
				JLabel label1 = new JLabel("Flight ID: ");
				gbLayout.setConstraints(label1, c);
				inputDataPanel.add(label1);
				
				c.gridx = 1;
				final JTextField txtFlightId = new JTextField(10);
				gbLayout.setConstraints(txtFlightId, c);
				inputDataPanel.add(txtFlightId);
				
				c.gridx = 0;
				c.gridy = 1;
				
				JLabel label2 = new JLabel("Plain Model: ");
				gbLayout.setConstraints(label2, c);
				inputDataPanel.add(label2);
				
				c.gridx = 1;
				
				final JTextField txtPlaneModel = new JTextField(10);
				gbLayout.setConstraints(txtPlaneModel, c);
				inputDataPanel.add(txtPlaneModel);
				
				c.gridx = 0;
				c.gridy = 2;
				
				JLabel label3 = new JLabel("Destination: ");
				gbLayout.setConstraints(label3, c);
				inputDataPanel.add(label3);
				
				c.gridx = 1;
				
				final JTextField txtOrigin = new JTextField(10);
				gbLayout.setConstraints(txtOrigin, c);
				inputDataPanel.add(txtOrigin);
				
				c.gridx = 0;
				c.gridy = 3;
				c.gridwidth = 2;
				c.gridheight = 1;
				c.anchor = GridBagConstraints.CENTER;
				c.insets = new Insets(15,0,0,0);
				
				JButton btnAddPlane = new JButton("Add Plane");
				gbLayout.setConstraints(btnAddPlane, c);
				btnAddPlane.setFocusable(false);
				
				
				c.gridx = 0;
				c.gridy = 4;
				
				final JLabel lblError = new JLabel(" ");
				gbLayout.setConstraints(lblError, c);
				inputDataPanel.add(lblError);
				
				
				btnAddPlane.addActionListener(new ActionListener(){
					public void actionPerformed(ActionEvent e){
						
						String flightID = txtFlightId.getText();
						if (flightID.isEmpty()){
							lblError.setText("<html><span style=\"color:red\">Error: Flight ID field is empty!</span></html>");
							return;
						}
						String planeModel = txtPlaneModel.getText();
						if(planeModel.isEmpty()){
							lblError.setText("<html><span style=\"color:red\">Error: Plane Model field is empty!</span></html>");
							return;
						}
						String originCity = txtOrigin.getText();
						if (originCity.isEmpty()){
							lblError.setText("<html><span style=\"color:red\">Error: Destination field is empty!</span></html>");
							return;
						}
						
						if(!atc.isRegistered(flightID)){
							atc.addFlight(new Plane(flightID,planeModel,originCity));
							lblError.setText(flightID + " added!");
						}
						else{
							lblError.setText("<html><span style=\"color:red\">Error: " + flightID + " is registered!</span></html>");
						}
						
					}
				});
				
				
				inputDataPanel.add(btnAddPlane);
				
				inputDataPanel.revalidate();
			}
		});
Внутри обработчика создается формочка, кнопка "Добавить" и опять таки обработчик для кнопки "Добавить".

Вопрос: Насколько мои действия адекватны?
Как можно по другому? Как нужно?
Я бы изменил мир, но исходников нету
_Денис вне форума Ответить с цитированием
Ответ


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

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

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