Метод блокировки в JFrame (или JDialog)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Метод блокировки в JFrame (или JDialog)

Сообщение Anonymous »

Мне нужно, чтобы мой метод readString блокировался до тех пор, пока пользователь не введет свой текст в TextArea. Это модель моей проблемы:

Код: Выделить всё

public class Consola
{
private final JDialog dialog;
private final JTextArea textArea;
private String userInput;

public Consola(JFrame mainFrame)
{
dialog=new JDialog(mainFrame);
textArea=new JTextArea();
textArea.addKeyListener(new EscuchaKey());
dialog.add(new JScrollPane(textArea),BorderLayout.CENTER);

dialog.setSize(300,300);
dialog.setVisible(true);
}

public String readString()
{
// Resetear el estado
userInput=null;
textArea.setText("");

while(userInput==null)
{
}

return userInput;
}

class EscuchaKey extends KeyAdapter
{
@Override
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==KeyEvent.VK_ENTER)
{
userInput=textArea.getText().trim();
}
}
}
}
Я знаю, что проблема в том, что while(...); но я привел это в качестве примера.
Вот основной класс:

Код: Выделить всё

public class ConsolaTest {
public static void main(String[] args) {
// Crear un JFrame principal
JFrame mainFrame = new JFrame("Test Consola");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(300,300);

JButton button = new JButton(":O)");
mainFrame.add(button,BorderLayout.WEST);

Consola consola = new Consola(mainFrame);

// Acción del botón
button.addActionListener(e -> {
String input = consola.readString();
System.out.println("Texto ingresado: " + input);
});

mainFrame.setVisible(true);
}
}
Мне нужно, чтобы метод readString возвращал строку, введенную пользователем. Прототип метода изменить нельзя.
Чтобы понять суть проблемы, можно посмотреть эти видеоролики:
https://youtube.com/playlist? list=PLjYxSENnzyZltzpXd2_7azTYRu0QEOZbf&si=m2ZF2tZz3GrN-B81
Первый показывает класс Console именно так, как я хочу, чтобы он работал (в на самом деле он работает нормально).
Второй — тот же консольный класс, но созданный из другого JFrame. Текущая реализация принимает пользовательский ввод через JOptionPane, но я хочу, чтобы она работала точно так же, как показано в первом видео.
Пожалуйста, помогите мне. Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/793 ... or-jdialog
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»