我有以下两门课:
#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");
}
}
}即使我在JButton构造函数中禁用了LobbyView,我仍然可以单击它并得到消息“您按下了禁用的按钮”。
component.setEnabled(false)实际上是禁用一个组件,还是只对其进行灰色处理以使其看起来是禁用的?
发布于 2014-03-03 19:32:58
即使在JButton构造函数中禁用了LobbyView,我仍然可以单击它。
这是正确的。您不应该使用MouseListner。MouseListener独立于按钮的状态工作。
相反,您应该使用ActionListener。有关更多信息,请阅读有关如何使用按钮的Swing教程中的部分。或者还有一个关于How to Write an Action Listener的章节。
https://stackoverflow.com/questions/22155563
复制相似问题