2015-11-30 4 views
1

Я создаю графический интерфейс в Netbeans, и я хочу установить текстовое поле для отображения при выборе переключателя. По какой-то причине обнаружен щелчок переключателя, но текстовое поле не появляется при выборе. Любые предложения по решению этой проблемы? Мой код вставлен ниже. Текстовое поле называется newContainerNameInput, а кнопка радио newContainerRadioButton:Настройка JTextField, видимого на JRadioButton Нажмите

containersButtonGroup.add(newContainerRadioButton); 
    newContainerRadioButton.setText("Create a new container"); 
    newContainerRadioButton.addItemListener(new java.awt.event.ItemListener() { 
     public void itemStateChanged(java.awt.event.ItemEvent evt) { 
      newContainerRadioButtonItemStateChanged(evt); 
     } 
    }); 
    newContainerRadioButton.addActionListener(new java.awt.event.ActionListener() { 
     public void actionPerformed(java.awt.event.ActionEvent evt) { 
      newContainerRadioButtonActionPerformed(evt); 
     } 
    }); 

    newContainerNameInput.setText("Enter new container name here"); 
    newContainerNameInput.setVisible(false); 

private void newContainerRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {               
    System.out.println("test"); 
    newContainerNameInput.setVisible(true); 
} 
+0

Выполняется ли ваш личный метод? как выглядит остальная часть вашего кода? также: почему вы передаете событие в качестве параметра вашему приватному методу? – Stultuske

+0

@Stultuske yep, частный метод запускается, когда я запускаю отладчик. И Netbeans фактически автогенерирует этот код, поэтому я не могу редактировать действительный метод actionPerformed, я могу редактировать только то, что находится внутри newContainerRadioButtonActionPerformed. – user3802348

+0

'newContainerNameInput'has был добавлен в ваш макет, не так ли? Поделитесь некоторым кодом того, как вы добавляете текст и кнопку к вашему представлению? – Jan

ответ

1

Заменить следующий код в ActionListener из RadioButton

private void newContainerRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {               
    System.out.println("test"); 
    newContainerNameInput.setVisible(true); 
    revalidate(); 
} 

revalidate() делает 2 вещи. Первый invalidate() и validate(). Делая это, ваши компоненты становятся недействительными и снова проверены. Это означает, что макет снова .. Подробнее см. javadoc

+0

Спасибо! Это сработало и спасибо за объяснение! – user3802348

Смежные вопросы