jbutton.setEnabled(false)不会禁用按钮输入

Bir*_*man 1 java swing

我有以下两个类:

#1

public class LobbyView extends JPanel
{       

    private final JButton sendGameRequestButton = new JButton();

    public JButton getSendGameRequestButton()
    {
        return sendGameRequestButton;
    }

    LobbyView()
    {
        sendGameRequestButton.setPreferredSize(new Dimension(15, 20));
        sendGameRequestButton.setText("Send game request");
        sendGameRequestButton.addMouseListener(new LobbyListener(this));
        sendGameRequestButton.setEnabled(false);
    }
}
Run Code Online (Sandbox Code Playgroud)

#2

public class LobbyListener implements MouseListener
{
    LobbyView lobbyView;

public LobbyListener(LobbyView sentLobbyView)
{
    lobbyView = sentLobbyView;
}

@Override
public void mouseClicked(MouseEvent e)
{
    if (e.getButton() == 1)
    {      
        if (e.getSource() == lobbyView.getSendGameRequestButton())
        {
            System.out.println("You pushed the disabled button");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

即使我在LobbyView构造函数中禁用了JButton,我仍然可以单击它并收到消息" 你按下了禁​​用按钮 ".

component.setEnabled(false)实际上是否禁用某个组件,或者只是将其灰显以使其禁用LOOK?

cam*_*ckr 5

即使我在LobbyView构造函数中禁用了JButton,我仍然可以单击它

那是正确的.你不应该使用MouseListner.MouseListener的工作独立于按钮的状态.

相反,你应该使用ActionListener.有关更多信息,请阅读Swing教程中有关如何使用按钮的部分.或者也有一节How to Write an Action Listener.