2016-05-09 2 views
0

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

ответ

4

Вы не добавляете свой текст в любую панель/диалог и т. Д., Поэтому он не отображается на экране.

c.gridx = 0; 
    c.gridy = 1; 
    mainPanel.add(description, c); 
    c.gridy = 2; 
    c.gridwidth = 3; 
    //change it mainPanel.add(description, c); 
    mainPanel.add(textArea, c); 
Смежные вопросы