0

在开始之前,我是一个初学者程序员。

单击按钮时如何启用文本字段。

我有两个框架,一个具有 JFields,另一个具有异常。当异常发生时 > setEditable(false) 但是一旦用户单击确定按钮(我在异常中所做的),我应该做出什么声明来启用 JFields?

我尝试将静态布尔值添加到异常框架中,并且在此类执行的操作中,我将该布尔值初始化为true

在另一个类中,我添加了一个 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);

哇哦。感觉太棒了哈哈。谢谢大家。我应该删除我的问题还是将其留给可能面临与我相同问题的其他人?:P

4

2 回答 2

1

你的问题需要更多细节。但是,如果您只想显示“异常窗口”并仅在用户关闭此窗口后才允许用户执行其他任何操作,我认为您只需要一个 MessageDialog:请参阅JOptionPane

如果您需要显示更多详细信息,您可以创建自己的 modal JDialog

查看如何制作对话框

于 2012-05-15T16:12:38.777 回答
0

通过编写隐藏文本字段:

jTextfield.setVisible(fasle);

在表单代码的构造函数中。而不是使用按钮事件“Action -> Action Performed”并编写代码:

jTextfield.setVisible(true);

因此,只有在单击按钮后,您的文本字段才会可见。

于 2012-05-15T16:42:01.780 回答