Как сделать JButton невидимым, но интерактивным?

#java #swing #jbutton #invisible #clickable

#java #swing #jbutton #невидимый #интерактивно

Вопрос:

Как мне сделать JButton в java невидимым, но интерактивным?

 button.setVisible(false); 
  

делает кнопку невидимой, но не вызываемой, есть ли какой-либо метод, который делает ее невидимой, но кликабельной?

Я пытался делать:

 button.setVisible(false);
button.setEnabled(true);
  

но это тоже не сработало.
Я хочу сделать это, потому что я хочу иметь кнопку с изображением, если я помещу невидимую JButton поверх изображения, кнопка будет реагировать при нажатии на изображение или невидимую кнопку.

Комментарии:

1. Помогите мне, возможно, изучая Java? Я просто не хочу создавать невидимую кнопку, это так просто.

2. Вау, сегодня все чувствуют себя немного сурово? Давайте все будем уважительны.

3. Что, если вы хотите встроить пасхальное яйцо, в котором при нажатии на маленькую, но невидимую кнопку появляется игра, в которой вам нужно загонять кошек в коробку, используя пару электростатически заряженных огурцов? Полегче, это правильный вопрос.

4. @Town: Я думаю, для этого есть функция: new JInvisibleStaticCucumberBoxCatButton()

5. @Jeff B — Плохая формулировка, это класс: P

Ответ №1:

Я думаю, вы имеете в виду прозрачный, а не невидимый.

Это сделает интерактивную кнопку, которая не является «видимой», то есть прозрачной:

 button.setOpaque(false);
button.setContentAreaFilled(false);
button.setBorderPainted(false);
  

Это отвечает на ваш заданный вопрос, но если вы намерены сделать изображение интерактивным, для этого тоже есть лучший способ:

 ImageIcon myImage = new ImageIcon("images/myImage.jpg");
JButton button = new JButton(myImage);
  

Комментарии:

1. Да, там сказано, что я должен подождать 1 минуту.

2. О, у меня есть еще один маленький вопрос, как мне изменить цвет границы JButton?

3. @Stan — Взгляните на setBorder метод:)

Ответ №2:

Ну, в этом нет смысла, так что, поскольку нет смысла, стандартного способа сделать это нет, но можно переопределить метод paint в JButton и ничего в нем не делать, как:

 class InvisibleButton extends JButton {

    @Override
    public void paint(Graphics g){
          // Do nothing here
    }
}
  

Попробуйте поиграть с этим.