Я создал этот графический интерфейс для одного моего приложения. В методе override actionPerformed
Мне нужно вставить final
для строки command
, потому что эта переменная используется во внутреннем классе. Есть ли способ избежать этой проблемы?избегать использования конечной переменной String
@Override
public void actionPerformed(ActionEvent e)
{
final String command = e.getActionCommand();
if(command.equals("add"))
{
new Thread(new Runnable(){
@Override
public void run()
{
// ... code skipped ... //
ous.writeObject(command);
// ... code skipped ... //
}
}).start();
}
else if(command.equals("remove"))
{
new Thread(new Runnable(){
@Override
public void run()
{
// ... code skipped ... //
ous.writeObject(command);
// ... code skipped ... //
}
}).start();
}
}
я пытался решить вопрос об объявлении
String command = null;
в начале кода.
В чем проблема? Нужно набрать «final»? :) Не могли бы вы уточнить? –
Ваш код не подтверждает [SSCCE] (http://sscce.org/). – Lion
Вам не следует создавать новый экземпляр «Thread» для того, что вы пытаетесь сделать, но вместо этого используйте «SwingWorker» (или называете свой «emptyTextField» на EDT). Кроме того, чтение значения текстовых полей в вашем потоке должно также происходить на EDT. И, наконец, закрытие ваших потоков должно произойти в блоке 'finally' – Robin