Вы можете отобразить любой компонент Swing в панели JOptionPane, чтобы вы могли настроить ввод с помощью собственной метки и текстового поля:
JTextField line = new JTextField(10);
Object[] msg = {"Enter Line (80 characters max):", line};
int result = JOptionPane.showConfirmDialog(
null,
msg,
"Enter ...",
JOptionPane.OK_CANCEL_OPTION,
JOptionPane.PLAIN_MESSAGE);
System.out.println("You entered: " + line.getText());
Однако у вас все еще будут две проблемы:
Вы должны быть в состоянии ограничить количество символов. Чтобы решить эту проблему, вы можете добавить DocumentFilter
в текстовое поле. Прочитайте раздел из учебника по Swing по Реализация DocumentFilter для рабочего примера, который делает именно то, что вы хотите.
Когда отобразится панель параметров, фокус будетна кнопке, а не в текстовом поле. Чтобы исправить это, отметьте Dialog Focus , который позволит вам фокусироваться на текстовом поле при отображении панели параметров. Этот класс добавляет AncestorListener
к текстовому полю, что позволит текстовому полю запрашивать фокус при отображении панели параметров.