Все, что я хочу сделать, имеют 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 или заменить текстовое поле текстовой областью полностью? Я стараюсь не иметь необходимость сделать пользовательское диалоговое окно, если возможный и это "кажется" как что-то, что должно быть легко сделать?
Вы находитесь на правых линиях; Вам просто нужно использовать 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...