Можно ли предложить пользователю сообщение об ошибке, если он нажимает на кнопку, которая отключена, JAVA

Можно ли предложить пользователю сообщение об ошибке, если он нажимает на кнопку, которая отключена. например

   JButton button = new JButton();
   button.addActionListener(this);
   public void actionPerformed(ActionEvent e) {

   if(buttonClicked.getSource()== button){
    button.setEnabled(false);
   }
   }

Прямо сейчас, когда пользователь нажимает кнопку, кнопка отключается, как только кнопка отключается, и пользователь нажимает кнопку еще раз, я хочу, чтобы появилось сообщение об ошибке, говорящее что-то вроде: "Вы не можете нажать меня снова"

1 ответ

Решение

Слушатели мыши работают, даже если компонент отключен, но видим. Вы можете попробовать использовать что-то вроде

button.addMouseListener(new MouseAdapter() {// MouseAdapter is empty implementation
                                            // of MouseListener
    @Override
    public void mouseClicked(MouseEvent e) {
        JButton b = (JButton) e.getSource();
        if (!b.isEnabled())
            System.out.println("you cannot click me again");
    }
});

Вот небольшой пример более полного кода

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);

final AtomicBoolean justEnabled = new AtomicBoolean(false);
final JButton button = new JButton("click");

button.addMouseListener(new MouseAdapter() {

    @Override
    public void mouseClicked(MouseEvent e) {
        JButton b = (JButton) e.getSource();
        if (!b.isEnabled())
            if (justEnabled.get())
                justEnabled.set(false);
            else
                System.out.println("you cannot click me again");
    }

});

button.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JButton b = (JButton) e.getSource();
        b.setEnabled(false);
        justEnabled.set(true);
    }
});

JButton enabler = new JButton("enable");
enabler.addActionListener(new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        button.setEnabled(true);
    }
});

frame.setLayout(new FlowLayout());
frame.add(button);
frame.add(enabler);
frame.setVisible(true);
Другие вопросы по тегам