Как включить текстовое поле при нажатии кнопки?

Прежде чем начать, я начинающий программист.

Как включить текстовое поле при нажатии кнопки.

У меня есть два кадра, один из которых имеет JFields, а другой за исключением. Когда возникает исключение> setEditable(false), но какое заявление я должен сделать, чтобы включить JFields после того, как пользователь нажмет кнопку "все в порядке" - что я сделал в исключении -?

Я попытался добавить статическое логическое значение к фрейму исключения, и внутри действия, выполняемого этим классом, я инициализировал логическое значение true.

в другом классе я добавил if if, если это логическое значение true, тогда setEditable (true)

- ======== - Суть этой программы в том, что при возникновении исключения пользователь не может ничего вводить в поля, пока не закроет окно исключения.

Я хотел бы, чтобы вы мне помогли.

Со всей любовью, программисты.

Код действия, выполненного для ОКНА ИСКЛЮЧЕНИЯ (с кнопкой "ОК").

  public void actionPerformed(ActionEvent e){
      {
      allow=true; //static boolean
        Container TheFrame = OKButton.getParent();
        do TheFrame = TheFrame.getParent(); 
                 while (!(TheFrame instanceof JFrame));

        ((JFrame) TheFrame).dispose();

     }

Код действия, выполненного для ОСНОВНОЙ ПРОГРАММЫ (с тремя полями, исключение произойдет, когда пользователь введет не цифры). Я добавил некоторые комментарии, чтобы уточнить.

  public void actionPerformed(ActionEvent event) {

     try{
        r =Double.parseDouble(RField.getText());
        s=Double.parseDouble(SField.getText());
        h=Double.parseDouble(HField.getText());


        Cone C = new Cone(r,s,h);//class cone 
        if (event.getSource() instanceof JButton) {
           JButton clickedButton = (JButton) event.getSource();
           if (clickedButton == VolumeButton) {
              Result.append("VOLUME =  "+C.volume()+ "\n");
              ifV= true;//this's for clearing the fields for new entries.


           }
           if (clickedButton == AreaButton) {
              Result.append("SURFACE AREA =  "+C.surfaceArea()+ "\n");
              ifA= true;//this's for clearing the fields for new entries.


           }

           if(ifA&&ifV){ // clearing the fields for new entries.
              SField.setText(CLEAR);
              HField.setText(CLEAR);
              RField.setText(CLEAR); 
              ifV=false; ifA= false;}



        } 


        SList.addShape(C);

     }

        catch(NumberFormatException e){ 

        //Object of type "Exception__" already created 

           Ex.setVisible(true);//class "Exception__" is the one i've made for Exception window

           SField.setText(CLEAR);
           HField.setText(CLEAR);
           RField.setText(CLEAR);
           SField.setEditable(false);
           HField.setEditable(false);
           RField.setEditable(false);


        }/*here, if the user clicked on -that okay in Exception window- 
and variable allow initialized to "true" those statements should extend. I guess? 
- everything worked correctly except for this ?*/
     if(Ex.allow){    
        SField.setEditable(true);
        HField.setEditable(true);
        RField.setEditable(true);  } 


  }

СПАСИБО ВСЕМ ЭТО НАКОНЕЦ РАБОТАЛО.

я добавил

Ex.allow(SField,HField,RField);

к улову.

и добавил этот метод в класс Exception__:

        public void allow(JTextField js,JTextField jh,JTextField jr){

     HField =jh;
     SField =js;
     RField =jr;
  }

наконец, к действию, выполненному из класса Exception__:

  SField.setEditable(true);
           HField.setEditable(true);
           RField.setEditable(true);

WOHOOOO. Это так здорово, лол. Спасибо всем. я должен удалить свой вопрос или оставить его другим, кто может столкнуться с той же проблемой, что и я?:П

2 ответа

Решение

Ваш вопрос требует гораздо больше подробностей. Но если все, что вы хотите, чтобы показать "окно исключений" и позволить пользователю делать что-либо еще только после того, как оно закрывает это окно, я думаю, все, что вам нужно, это MessageDialog: см. JOptionPane

Если вам нужно больше информации для отображения, вы можете создать свой собственный модальный JDialog,

Смотрите Как сделать диалоги

Сделайте текстовое поле скрытым, написав:

jTextfield.setVisible (fasle);

в конструкторе кода вашей формы. Затем используйте кнопку события "Действие -> Действие выполнено" и напишите код:

jTextfield.setVisible (истина);

и, таким образом, ваше текстовое поле будет видно только после нажатия кнопки.

Другие вопросы по тегам