Me gustaría preguntar lo mismo que this question pero usando SWT: ¿Hay alguna manera de hacer un botón con su propio gráfico de botón no solo con una imagen dentro del botón? Si no, ¿es otra forma de crear un botón personalizado en Java?Crear un botón personalizado con SWT
6
A
Respuesta
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
No, puede agregar un PaintListener a un botón, pero probablemente se vea realmente extraño.
Lo que tendría que hacer es establecer el estilo de la ventana como "dibujado por el propietario" y luego agregar su código de dibujo en el método Button # wmDrawChild. Esto significa que debe agregar dependencias en las clases SWT internas y solo funcionará para Windows.
Cuestiones relacionadas
- 1. JavaFX - crear botón personalizado con imagen
- 2. Crear un botón personalizado en Java con JButton
- 3. SWT: ¿Cómo crear un grupo sin borde?
- 4. Botón con diseño XML personalizado
- 5. IOS - Botón personalizado con un estado depresivo
- 6. Cómo crear un teclado personalizado
- 7. Crear un UIActivityIndicatorView personalizado
- 8. javascript para crear un botón con onclick
- 9. Crear un botón animado
- 10. Crear un JButton personalizado en Java
- 11. Control personalizado de Silverlight Crear evento personalizado
- 12. ¿Cómo puedo crear un botón "Sí a todos" con WinAPI?
- 13. botón de deshabilitar con fondo personalizado android
- 14. Crear un NSAlert totalmente personalizado
- 15. Crear una aplicación SWT de arquitectura múltiple con Maven
- 16. ¿Cómo crear una preferencia personalizada con un botón neutral?
- 17. ¿Puedo configurar un ícono personalizado para un botón jQueryUI?
- 18. Botón personalizado o vínculo a una página de Visualforce con un controlador personalizado
- 19. Cómo agregar un estado de botón personalizado
- 20. JFreeChart con SWT
- 21. Crear un botón con un ícono en actionscript
- 22. Comparar SWT con SWING
- 23. SWT problema con syncExec()
- 24. Crear un botón asp: programmatically?
- 25. Android: forma de botón personalizado
- 26. Crear servidor oAuth personalizado con Zend
- 27. Botón Atrás personalizado en UINavigationController
- 28. ¿Cómo abrir un archivo con una aplicación predeterminada en SWT?
- 29. iOS botón personalizado similar a barbutton
- 30. crear un proyecto de creación personalizado con el compositor
¿Podría complacer a todo el código de clase? Tengo problemas para que funcione. Gracias! – Hectoret
He editado la clase. Compila, pero en realidad no lo he probado. –