2014-03-03 136 views
1

我有以下两类:jbutton.setEnabled(假)不会禁用按钮输入

#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); 
    } 
} 

#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"); 
     } 
    } 
} 

即使我在LobbyView构造函数中禁用了JButton,我仍然可以点击它并获取消息“You pushe d禁用按钮“。

是否component.setEnabled(false)实际上DISABLE一个组件,或只是灰色,使它看起来被禁用?

回答

5

即使我禁用了一个JButton在LobbyView构造,我还可以点击

这是正确的。你不应该使用MouseListner。 MouseListener独立于按钮的状态工作。您可以使用ActionListener。请阅读有关How to Use Buttons的Swing教程以了解更多信息。或者也有关于How to Write an Action Listener的部分。

+0

+1。他也不应该设置首选大小。 –