#java #swing #jframe
#java #swing #jframe
Вопрос:
У меня есть 5 форм, одна из которых открывается, когда другая закрыта. экран входа 2-го участника. Последним является экран покупки билета. Бронирование производится на экране покупки билетов. Информация об участнике хранится в базе данных. Если адрес электронной почты и пароль на экране входа в систему совпадают, войдите в систему с теми, которые есть в базе данных. Я хочу получить доступ к текущему пользователю в последней форме.
К сожалению, я не предпринял никаких действий для этого с самого начала. Теперь, если вход в систему прошел успешно, я могу получить электронное письмо пользователя и переслать его в последнюю форму. Я могу получить доступ к идентификатору участника из этого электронного письма и добавить информацию об участнике в процессе окончательного бронирования.
Я не могу переслать ваше электронное письмо участника в последнюю форму! В этом проблема. Я много переключался между формами, но я могу делать это только с формами, которые открываются и закрываются последовательно. Если я создам объект с помощью конструктора и введу setVisible(true)
его следующим образом, электронное письмо будет передано, но последняя форма откроется после 1-й формы. Если я удалю setVisible
метод или сделаю false , даже если данные передаются в последней части, я не смогу его использовать, потому что я не могу распечатать его на этикетке.
private void btnMemberEnterActionPerformed(java.awt.event.ActionEvent evt) {
BiletAl pencere2 = new BiletAl(txtUyeEPosta.getText(),lbl.getText());
pencere2.setVisible(true);}
public class BiletAl extends javax.swing.JFrame {
public BiletAl() {
initComponents();
}
public BiletAl(String gelenEPosta,String lbl) {
initComponents();
System.out.println(gelenEPosta);
lblGelenEposta.setVisible(true);
lblGelenEposta.setText(gelenEPosta);
}
Если это произойдет: порядок открытия формы нарушен. но «нулевой» текст, то есть введенный адрес электронной почты, передается на метку:
private void btnMemberEnterActionPerformed(java.awt.event.ActionEvent evt) {
BiletAl pencere2 = new BiletAl(txtUyeEPosta.getText(),lbl.getText());
}
Если первая часть изменяется точно так же: переключение между формами выполняется правильно, но даже если данные, поступающие в качестве параметра конструктора with System.out.println
, являются правильными, они не добавляют их к метке when setLabel
. Метка не записывает «nil» во входящем электронном письме.
Комментарии:
1. «У меня есть 5 форм ..» Если под «формами» вы подразумеваете
JFrame
экземпляры (и, пожалуйста, используйте имена классов), то это уже пошло не так. Эти 5 представлений должны быть упакованы вCardLayout
amp; / или диалоговые окна, отличные от одногоJFrame
для основного приложения.2. Для приложения с несколькими JPanel требуется модель данных, чтобы все было вместе. Модель данных состоит из одного или нескольких простых классов Java для хранения всей информации о резервировании. Модель данных взаимодействует с базой данных. Модель данных заполняет представление, которое состоит из одного JFrame и нескольких JPanels. Классы контроллеров — это классы ActionListener, которые реагируют на нажатия JButton. Шаблон модели / представления / контроллера помогает поддерживать разделение задач и упрощает понимание приложения.
3. «Я на более базовом уровне». Для того, чтобы заставить его работать, потребуется более продвинутый уровень понимания Swing
JFrame
, чем для того, чтобы научиться делать это с помощью макетов и диалоговых окон. Кроме того, если вы попробуете это таким образом, люди с гораздо большей вероятностью помогут. «Я никогда не слышал о концепции CardLayout и / или диалоговых окнах». Вот почему я привлек к ним ваше внимание. Любой, кто был знаком с ними, знал бы, что это лучший подход. Итак, настало время ознакомиться с ними .4. «простые для понимания ресурсы» Поместите «X Java tutorial» в поисковую систему, где X — рассматриваемый класс, например
CardLayout
, илиJDialog
. Главный удар должен быть направлен на учебное пособие по Java, которое приходит прямо из первых уст и обычно включает пример кода.5. «Итак, какое решение можно придумать для моего вопроса, даже если это неправильный путь?» Я не трачу свое время на размышления об этом.
Ответ №1:
Затем попробуйте использовать эти команды:
1)this.setVisible(true); 2)this.setVisible(false);