setEditable使用ActionListener

时间:2013-05-01 01:36:27

标签: java swing user-interface

单击按钮应在将文本字段设置为可编辑之间切换。当GUI打开时,文本字段应该是可编辑的。

public void actionPerformed( ActionEvent evt)
{
    if(inputField.setEditable() == (true))
    {
        inputField.setEditable(false);
    }
    else
    {
        inputField.setEditable(true);
        resultMessage.setText("");
        resultMessage.setText("Edit Button Pressed");
    } 

我在这里做错了什么?

我知道else语句是正确的,只是IF的开头是错误的,我不知道我哪里出错了。


其他问题:

public void actionPerformed( ActionEvent evt)
{
    if(inputField.isEditable() == (true))
    {
        inputField.setEditable(false);
    }
    else
    {
        inputField.setEditable(true);
        inputField.setText("");
        resultMessage.setText("Edit Button Pressed");
    }  

    if(inputField.getBackground() == Color.RED)
    {
        inputField.setBackground(Color.WHITE);
    } 
    else
    {
        inputField.setBackground(Color.RED);
        resultMessage.setText("Colour Button Pressed");
    }

}

我现在有2个IF,但显然第一个IF将停止第二个IF工作如何解决这个问题,当我按下一个按钮来执行setEditable部分时,当我按下另一个按钮时它会做我的变色?

1 个答案:

答案 0 :(得分:3)

你正在检查setEditable()是否属实,这是没有意义的;毕竟,它返回void并需要一个布尔参数。更大的问题是您不应该通过“ setter ”字段检查可编辑状态,而应该是“ getter ”字段,此处为isEditable()

if (inputField.isEditable()) {
   //....
} else {
   //...
}

正如MadProgrammer指出的那样,这些信息在Java API中都很容易获得,您希望非常熟悉这些信息。


编辑,关于您的新问题:

  

我现在有2个IF,但显然第一个IF将停止第二个IF工作如何解决这个问题,当我按下一个按钮来执行setEditable部分时,当我按下另一个按钮时它会做我的变色?

不,第一个if / else将在第二个if / else块上具有无效。你的问题在别处。如果仍然很糟糕的话,请考虑使用附加信息作为stackoverflow的新问题。

另请注意,这是不必要的罗嗦:

if(inputField.isEditable() == (true))

并且如上所述写得更好:

if (inputField.isEditable())