У меня есть JFrame с некоторым JTextField и JButton. Я хочу, чтобы он вел себя как JOptionPane.showInputDialog(). В принципе, я хочу его построить, а затем вызвать .start() или что-то, что сделает его видимым, а затем дождитесь нажатия кнопки, а затем вернет содержимое JTextField. Я слышал, что wait()/notify() может это сделать, но я не знаю, подходит ли это для этого, и если да, могу ли я увидеть короткий пример того, как его использовать?Как подождать нажатия кнопки в Java
ответ
Вот попробуйте этот пример кода с помощью JDialog
:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DialogExample extends JFrame
{
private JLabel nameLabel;
public DialogExample()
{
super("Dialog Example");
}
private void createAndDisplayGUI()
{
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel contentPane = new JPanel();
nameLabel = new JLabel();
contentPane.add(nameLabel);
setContentPane(contentPane);
setSize(200, 100);
setLocationByPlatform(true);
setVisible(true);
MyDialog dialog = new MyDialog(this, "Credentials : ", true);
dialog.createAndDisplayGUI();
}
public void setName(String name)
{
if (name.length() > 0)
nameLabel.setText(name);
else
nameLabel.setText("Empty string received.");
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new DialogExample().createAndDisplayGUI();
}
});
}
}
class MyDialog extends JDialog
{
private JTextField nameField;
private JFrame frame;
public MyDialog(JFrame f
, String title, boolean isModal)
{
super(f, title, isModal);
frame = f;
}
public void createAndDisplayGUI()
{
JPanel contentPane = new JPanel();
contentPane.setLayout(new FlowLayout(FlowLayout.LEFT, 5, 5));
JLabel nameLabel = new JLabel("Please Enter your Name : ");
nameField = new JTextField(10);
JButton submitButton = new JButton("SUBMIT");
submitButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (nameField.getDocument().getLength() > 0)
frame.setName(nameField.getText());
else
frame.setName("");
MyDialog.this.dispose();
}
});
contentPane.add(nameLabel);
contentPane.add(nameField);
contentPane.add(submitButton);
add(contentPane);
pack();
setVisible(true);
}
}
Это было почти то решение, над которым я работал. Вы, вероятно, просто спасли меня полчаса. Спасибо – Fractaly
ВЫ МОЖЕТ ДОБРО ПОЖАЛОВАТЬ И СОХРАНЯТЬ СМОТРЕТЬ :-). СЧАСТЛИВЫЙ, чтобы знать, что мой ответ помог вам где-то :-) –
Одна вещь: могу ли я заставить его вернуть свое значение, например JOptionPane.showInputDialog, где ему не нужно обратный вызов на фрейме? – Fractaly
Также JDialog - это ваше решение для пользовательских диалоговых окон ввода, есть библиотека, которая может помочь ускорить вашу разработку. Он называется TaskDailog.
Более подробная информация на http://code.google.com/p/oxbow/wiki/TaskDialogIntroduction?tm=6
+1, несомненно, 'JDialog' может решить эту задачу здесь. –
- 1. Как подождать нажатия кнопки в цикле?
- 2. Как можно подождать некоторое время после нажатия кнопки?
- 3. После нажатия кнопки, как подождать завершения SwingWorker до продолжения?
- 4. java script для нажатия кнопки
- 5. Python3 черепаха, как подождать до нажатия клавиши
- 6. Ждите нажатия кнопки в foreach
- 7. Java. Как подождать?
- 8. Как подождать событие кнопки в отдельной форме
- 9. Подтвердить ввод до нажатия кнопки в Java
- 10. Как добавить кнопки нажатия кнопки в tvOS?
- 11. Как правильно подождать, когда кнопки перекрашивания
- 12. Ждите нажатия кнопки
- 13. Ожидание нажатия пользователем кнопки в Swift 2
- 14. Java-Draw прямоугольник после нажатия кнопки
- 15. Java Как подождать окончания клипа
- 16. создать JPanel после нажатия кнопки/Java
- 17. Как подождать нажатия клавиши ENTER в Python (2.7 +)?
- 18. Как подождать нажатия клавиши в приложении Qt GUI
- 19. Как изменить имя кнопки загрузки, чтобы подождать ..?
- 20. Java качели ActionEvent для нажатия кнопки
- 21. Закрытие JFrame после нажатия кнопки Java
- 22. Java - рисовать круг после нажатия кнопки
- 23. Как подождать атрибут? java + webdriver
- 24. Как запустить процесс в Java до нажатия кнопки?
- 25. Как временно приостановить цикл до нажатия кнопки в java
- 26. Как вызвать Outlook после нажатия кнопки в Java Swing?
- 27. Как запустить программу для нажатия кнопки в Java
- 28. Как вы добавляете картинку в апплет (java) после нажатия кнопки?
- 29. Как приостановить выполнение программы до нажатия кнопки в Java Swing
- 30. Переименование кнопки после нажатия - Java JButton
Почему бы не использовать 'JDialog' вместо' JOptionPane'? –
Кажется, что это может сработать. Может ли JDialog содержать больше информации, чем JOptonPane (чтобы он мог заменить JFrame?) – Fractaly
На самом деле они оба имеют равную функциональность, похоже, что вы действительно не знаете, что может сделать JOptionPane в реальном выражении, Окно диалога пользователю. Вы можете манипулировать 'JOptionPane', чтобы показать, что вам нужно. Вот пример использования [JOptionPane] (http://stackoverflow.com/questions/10306901/how-to-change-highlighting-color-in-java-swing-textarea-and-also-change-the-be/ 10309277 # 10309277), посмотрите на это тоже :-) –