#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
}
}
Попробуйте поиграть с этим.