Я хотел бы задать то же самое, что и this question, но с помощью SWT: есть ли способ сделать кнопку со своей собственной графикой не только с изображением внутри кнопки? Если нет другого способа создать пользовательскую кнопку в java?Создайте пользовательскую кнопку с SWT
6
A
ответ
10
public class ImageButton extends Canvas {
private int mouse = 0;
private boolean hit = false;
public ImageButton(Composite parent, int style) {
super(parent, style);
this.addPaintListener(new PaintListener() {
public void paintControl(PaintEvent e) {
switch (mouse) {
case 0:
// Default state
e.gc.drawString("Normal", 5, 5);
break;
case 1:
// Mouse over
e.gc.drawString("Mouse over", 5, 5);
break;
case 2:
// Mouse down
e.gc.drawString("Hit", 5, 5);
break;
}
}
});
this.addMouseMoveListener(new MouseMoveListener() {
public void mouseMove(MouseEvent e) {
if (!hit)
return;
mouse = 2;
if (e.x < 0 || e.y < 0 || e.x > getBounds().width
|| e.y > getBounds().height) {
mouse = 0;
}
redraw();
}
});
this.addMouseTrackListener(new MouseTrackAdapter() {
public void mouseEnter(MouseEvent e) {
mouse = 1;
redraw();
}
public void mouseExit(MouseEvent e) {
mouse = 0;
redraw();
}
});
this.addMouseListener(new MouseAdapter() {
public void mouseDown(MouseEvent e) {
hit = true;
mouse = 2;
redraw();
}
public void mouseUp(MouseEvent e) {
hit = false;
mouse = 1;
if (e.x < 0 || e.y < 0 || e.x > getBounds().width
|| e.y > getBounds().height) {
mouse = 0;
}
redraw();
if (mouse == 1)
notifyListeners(SWT.Selection, new Event());
}
});
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.keyCode == '\r' || e.character == ' ') {
Event event = new Event();
notifyListeners(SWT.Selection, event);
}
}
});
}
}
0
Нет, вы можете добавить PaintListener к кнопке, но это, вероятно, будет выглядеть странно.
Что вам нужно сделать, так это установить стиль окна «нарисованный владелец» и добавить код рисования в метод Button # wmDrawChild. Это означает, что вам нужно добавлять зависимости к внутренним SWT-классам, и это будет работать только для Windows.
Смежные вопросы
- 1. Листовка - Создайте пользовательскую кнопку для рисования
- 2. Создайте пользовательскую кнопку с Swift, расширив класс UIButton
- 3. Создайте пользовательскую кнопку с изменением размера анимации по щелчку
- 4. Создайте контрольную кнопку значения 3 на SWT (неуказано, да, нет)
- 5. Создайте пользовательскую функцию?
- 6. Добавить пользовательскую кнопку с AsyncDisplayKit
- 7. Создайте пользовательскую панель запуска Android
- 8. Создать пользовательскую кнопку
- 9. django admin Добавить пользовательскую кнопку + пользовательскую форму
- 10. Как остановить пользовательскую Thead в приложении SWT?
- 11. Скрыть пользовательскую кнопку ToolBar
- 12. Как создать пользовательскую кнопку?
- 13. Добавить пользовательскую кнопку подписи
- 14. Создайте пользовательскую таблицу в Java
- 15. Создайте пользовательскую форму для кнопки
- 16. Создайте пользовательскую форму с помощью CALayer
- 17. Создайте пользовательскую страницу WordPress с заголовками сообщений
- 18. Создайте пользовательскую сетку кнопок с помощью JqGrid
- 19. Создайте кнопку, которая создает кнопку
- 20. Создайте и используйте пользовательскую палитру
- 21. Создайте кнопку переключения с RxJS
- 22. wpf Как создать пользовательскую кнопку
- 23. Изменение цвета на пользовательскую кнопку
- 24. MPMoviePlayerController Добавить пользовательскую кнопку воспроизведения
- 25. Добавить пользовательскую кнопку в install4j
- 26. Как создать пользовательскую кнопку StumbleUpon?
- 27. Как сделать пользовательскую кнопку с выделенным
- 28. JavaFX - создать пользовательскую кнопку с изображением
- 29. Xamarin.iOS: создать пользовательскую кнопку с дополнительным объектом
- 30. Как создать пользовательскую кнопку с саморасширяющимся изображением?
Не могли бы вы рассказать весь код класса? У меня проблемы с работой. Спасибо! – Hectoret
Я редактировал класс. Он компилируется, но я его не проверял. –