Я писал редактор, который позволяет пользователю создавать таблицу выбора/назначения ставок. Часть этой программы заключалась в возможности добавления подкатегорий, которые имеют имя и описание. Я делал более сложные вещи, как это раньше, но потому, что мне это нужно было сделать через несколько дней, я решил попробовать и использовать JOptionPane и передать JTextField для имени и JTextArea для возможности длительного описания. Вот код, который у меня есть.Получение ввода от JTextArea в JOptionPane
JPanel mainPanel = new JPanel(new GridBagLayout());
mainPanel.setBorder(new TitledBorder("Set Creation Pane"));
JTextField setNameField = new JTextField(20);
JLabel dialogLabel1, dialogLabel2;
dialogLabel1 = new JLabel("Create a new set called");
if(possibleSuperSetName == null || possibleSuperSetName.length() == 0)
{
dialogLabel2 = new JLabel("at a global level");
}
else
{
dialogLabel2 = new JLabel("that is a subset to "+possibleSuperSetName);
}
JLabel description = new JLabel("Description for set");
JTextArea textArea = new JTextArea("Testing Testing 123");
textArea.setColumns(80);
textArea.setRows(10);
textArea.setFont(new Font(Font.MONOSPACED, Font.PLAIN, textArea.getFont().getSize()));
textArea.setEditable(true);
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.CENTER;
c.gridx = 0;
c.gridy = 0;
mainPanel.add(dialogLabel1, c);
c.gridx = 1;
mainPanel.add(setNameField, c);
c.gridx = 2;
mainPanel.add(dialogLabel2, c);
c.gridx = 0;
c.gridy = 1;
mainPanel.add(description, c);
c.gridy = 2;
c.gridwidth = 3;
mainPanel.add(description, c);
int option = JOptionPane.showConfirmDialog(null,
mainPanel,
"Set Creation",
JOptionPane.OK_CANCEL_OPTION);
if(option == JOptionPane.OK_OPTION)
{
ItemSet newSet = new ItemSet();
newSet.setSetName(setNameField.getText());
newSet.setDescription(textArea.getText());
caller.addSet(newSet);
}
Когда я запускаю этот код, то OptionPane открывается правильно и прекрасно работает с JTextField, но JTextArea не будет отображаться на всех. Есть ли причина, почему это так?