Итак, моя проблема в том, что мне приходится иметь дело с 2-мя слушателями, которые из одного зависят от другого. В основном, когда пользователи набирают имя, существует короткий поиск, если имя существует в списке, если оно не отображается. Если это произойдет, откроется новое окно, в котором пользователь отправит сообщение. То, что я не могу достичь, это то, что я открываю первое окно, нажимая на первую кнопку (кнопку ввода), и, как я уже сказал, если это будет успешно, в новом окне будет еще одна кнопка (пост), которая добавит текст, который он напечатал в своем списке сообщений. Дело в том, что я не могу заставить кнопку «Опубликовать» работать, так как мне нужен экстренный прослушиватель действий внутри прослушивателя действий, и я не могу разобрать «Опубликовать» на нового слушателя и заставить его работать там [не могу добавить больше параметры].Обработка ActionListener внутри ActionListener
вот код:
import java.awt.event.*;
import java.text.*;
import java.util.*;
import javax.swing.*;
public class LoginFrame extends JFrame {
private JFrame myFrame;
private JPanel myPanel;
private JButton enterButton;
private JTextField nameTextBox;
private ArrayList<User> users;
public LoginFrame(ArrayList<User> userList){
this.users = new ArrayList<User>(userList);
ButtonListener bListener = new ButtonListener();
myPanel = new JPanel();
nameTextBox = new JTextField(15);
enterButton = new JButton("Enter");
nameTextBox.setText("Please enter your name");
enterButton.addActionListener(bListener);
myPanel.add(nameTextBox);
myPanel.add(enterButton);
this.setContentPane(myPanel);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("Είσοδος Χρήστη");
this.setSize(300, 300);
}
public void addUser(User aUser){
users.add(aUser);
}
public class ButtonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource().equals(enterButton)){
String text = nameTextBox.getText();
for(User users: users){
if(!users.getName().equals(text)){
JOptionPane.showMessageDialog(null,"User " + text + " not found");
}
else{
//components
DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss");
Date dateobj = new Date();
postListener pListener = new postListener();
JFrame tempFrame = new JFrame("Σελίδα Χρήστη");
JPanel tempPanel = new JPanel();
JTextField userNameField = new JTextField(20);
JTextField userEmailField = new JTextField(30);
JTextArea postTextField = new JTextArea(5,5);
JButton postButton = new JButton("Post");
String textOfPost = postTextField.getText();
userNameField.setText(users.getName());
userEmailField.setText(users.getEmail());
tempPanel.add(userNameField);
tempPanel.add(userEmailField);
tempPanel.add(postTextField);
tempPanel.add(postButton);
//making a post object and adding it to an ArrayList which user's posts.
Post tempPost = new Post(dateobj,textOfPost,users.getName());
users.addAPost(tempPost);
tempFrame.setContentPane(tempPanel);
tempFrame.setVisible(true);
tempFrame.setSize(800, 800);
tempFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
}
}
}
}
1) См [Обнаружение/исправления для подвесного кронштейна близкого блока кода] (http://meta.stackexchange.com/q/251795/155831) для задачи я больше не мог быть обеспокоен фиксирующим , 2) Единственная пустая строка пробела в исходном коде - это все, что требуется *. Пустые строки после '{' или before '}' также типично избыточны. 3) Чтобы получить более эффективную помощь, отправьте сообщение [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). 4) См. [Использование нескольких JFrames, Хорошая/Плохая Практика?] (Http://stackoverflow.com/q/9554636/418556) –