¿Cómo hacer un botón redondo en swt? escribir un fragmento de código
importar java.awt.Color;
importar java.awt.Cursor
importar java.awt.Dimension; /p>
importar java.JButton;
importar javax.swing.JFrame;
clase pública CircleButton extiende JButton {
forma privada forma = nulo ;// Se utiliza para mantener la forma del botón, lo que ayuda a escuchar los eventos de clic en el botón
public CircleButton(String label) {
super(label);
this.MouseAdapter(){
/**
* {@inheritDoc}
*/
public void mouseEntered (MouseEvent e) {
((JButton)e.getSource()).setCursor(new Cursor(Cursor.HAND_CURSOR));
}
/ **
* {@inheritDoc}
*/
> public void mouseExited(MouseEvent e) {
((JButton) e.getSource()).setCursor(new Cursor(Cursor.MOVE_CURSOR));
}
});
Tamaño de dimensión = getPreferredSize(); // Obtener el tamaño óptimo del botón
// Cambiar el tamaño del botón para convertirlo en un cuadrado
size.width = size.height = Math.max(size.width, size .height);
setPreferredSize(size);
// Hacer que el botón j no dibuje un fondo, es decir, no muestre un fondo cuadrado, sino que dibuje un fondo circular
setContentAreaFilled(false);
}
// Dibuja el fondo del botón.
> // Dibuja el fondo y la etiqueta para el botón gráfico
protected void paintComponent(Graphics g) {
if (getModel().setColor( getBackground());
}
// El método fillOval dibujará una elipse tangente al rectángulo y la rellenará
// Cuando el rectángulo es un cuadrado, la elipse es un círculo
g.fillOval(0, 0, getSize().width - 1, getSize().getSize().height - 1);
// Llama a la clase principal paintComponent para dibuja la etiqueta del botón y el pequeño rectángulo donde está el foco
super.paintComponents(g);
}
// Usa un arco simple como borde del botón
// El borde del botón es un círculo > protected void paintBorder(Graphics g) {
g.setColor(getForeground( ));
// Usa el método drawOval para dibujar la elipse interior del rectángulo, pero no la rellenes, solo dibuja el borde
g.drawOval( 0, 0, getSize().width - 1, getSize().height - 1);
}
// Determina si el mouse está encima del botón
public boolean contains(int x, int y) {
p>
// Si el borde y la posición del botón cambian, genera un nuevo objeto de borde y posición
If ((shape == null) ||(!shape.getBounds() .equals(getBounds()))){
// Construye un objeto de elipse
forma = new Ellipse2D.Float(0, 0, getWidth(), getHeight());
}
// Determina si las coordenadas x, y del mouse están dentro del rango forma del botón
return shape.contains(x, y);
}
public static void main(String[] args) {
JButton button = new CircleButton("Haz clic en mí");// Genera un botón circular p>
//button.setBackground(Color.green);// Establece el color de fondo en verde
// Genera un marco para mostrar el botón
JFrame frame = new JFrame("Graphic Button");
frame.getContentPane().setBackground(Color.amarillo) ;
frame.getContentPane().setLayout(nuevo FlowLayout);
p>