Я работаю в чат-приложении. В этом приложении у меня есть JTxtField txtMessage
, который отправляет сообщение, когда пользователь нажимает Enter. Я хочу добавить JButton btn_send
, который делает то же самое, но если я добавлю btn_send.addActionListener(enviar_mensaje)
, метод ничего не сделает, пока я не нажимаю Enter в JTextField
.Как использовать тот же actionListener, что и другой элемент в Java
Как использовать JTxtField
и JButton
для того же метода?
public void write(){
Thread writeThread = new Thread(new Runnable(){
public void run(){
try{
writer = new PrintWriter(socket.getOutputStream(),true);
txtMessage.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String sendMessage = txtMessage.getText();
writer.println(sendMessage);
txtMessage.setText("");
chatArea.append("Server say: "+sendMessage+"\n");
btnClean.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
chatArea.setText("");
}
});
}
});
}catch(Exception ex){
ex.printStackTrace();
}
}
});
writeThread.start();
}
Вы добавляете прослушиватель действий внутри 'actionPerformed'? Это не хорошо. Подготовьте слушателей действий перед потоком (я не знаю, для чего это). – user1803551
И подсказка: основной язык здесь ** Английский **. Это верно и для кода; поэтому вместо прямого вставки исходного кода подумайте о создании минимально жизнеспособного примера, в котором используются английские термины. Помогает, чтобы получить хорошие ответы. И: under_bares не идут в именах Java, вы ** ** ** используете их только в SOME_CONSTANT. – GhostCat
@ user1803551 Я расскажу вам, когда я сделаю эти изменения. –