JOptionPane настраивают вход

Все, что я хочу сделать, имеют JOptionPane inputDialog с JTextArea вместо JTextField.
Я пытался вставить JTextArea параметра сообщения как так

Object[] inputText = new Object[]{new JLabel("Enter Graph Information"),
                                  newJTextArea("",20,10)};
graphInfo=(String)JOptionPane.showInputDialog(null,
                                              inputText,
                                              "Create Graph",
                                              JOptionPane.PLAIN_MESSAGE,
                                              null,
                                              null,
                                              "");

Но это все еще имеет текстовое поле внизу, и я не могу получить текст от JTextArea. Там какой-либо путь состоит в том, чтобы или удалить поле оригинального текста и получить текст от jtextarea или заменить текстовое поле текстовой областью полностью? Я стараюсь не иметь необходимость сделать пользовательское диалоговое окно, если возможный и это "кажется" как что-то, что должно быть легко сделать?

6
задан Matt Phillips 18 January 2010 в 21:26
поделиться

1 ответ

Вы находитесь на правых линиях; Вам просто нужно использовать ShowConfirmDialog вместо ShowMessageDialog , который позволяет пройти любую компонент как ваше «сообщение» и отображалось в JDialog . Затем вы можете захватить содержимое jtextarea , если пользователь нажимает ОК; например

int okCxl = JOptionPane.showConfirmDialog(SwingUtilities.getWindowAncestor(this),
                                    textArea,
                                    "Enter Data",
                                    JOptionPane.OK_CANCEL_OPTION)

if (okCxl == JOptionPane.OK_OPTION) {
  String text = textArea.getText();
  // Process text.
}

Если вы хотите показать JLabel в сочетании с вашим jtextarea , вы можете создавать и проходить в jpanel , содержащем компонент ; например

JTextArea textArea = ...
JPanel pnl = new JPanel(new BorderLayout());

pnl.add(new JLabel("Please enter some data:"), BorderLayout.NORTH);
pnl.add(textArea, BorderLayout.CENTER);

JOptionPane.show...
8
ответ дан 16 December 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: