En este tutorial crearemos un formulario de logueo de forma circular usando el lenguaje java y el IDE de Netbeans.
Necesitamos
Tiempo: 15 Minutos
Paso 1: Crea un nuevo proyecto
Paso 2: Añade al proyecto:
Paso 3: Abre la clase CirclePanel y pega el siguiente código:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.RenderingHints;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.geom.Ellipse2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
* @web https://www.jc-mouse.net/
* @author Mouse
*/
public class CirclePanel extends JPanel implements MouseListener,MouseMotionListener{private final Dimension d = new Dimension(400,400);
private Point initialClick;
private JFrame parent;/**
* Constructor de clase
*/
public CirclePanel(){
super();
CirclePanel.this.setSize(d);
CirclePanel.this.setPreferredSize(d);
CirclePanel.this.setVisible(true);
CirclePanel.this.addMouseListener(CirclePanel.this);
CirclePanel.this.addMouseMotionListener(CirclePanel.this);
}@Override
public void paintComponent(Graphics g){
Graphics2D g2 =(Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
//fondo
g2.setStroke(new BasicStroke( 0f) );
g2.setColor( new Color(228,228,228) );
g2.fill( new Ellipse2D.Double(0, 0 , getWidth(), getHeight() ) );
g2.setColor( new Color(240,240,240) );
g2.fill( new Ellipse2D.Double(10, 10 , getWidth()-20, getHeight()-20 ) );
//borde
g2.setStroke(new BasicStroke( 1f) );
g2.setColor( new Color(174,174,174) );
g2.draw( new Ellipse2D.Double(0, 0 , getWidth()-1, getHeight()-1 ) );
g2.draw( new Ellipse2D.Double(10, 10 , getWidth()-21, getHeight()-21 ) );
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mousePressed(MouseEvent e) {
setCursor(new Cursor(Cursor.MOVE_CURSOR));
initialClick = e.getPoint();
getComponentAt(initialClick);
}
@Override
public void mouseReleased(MouseEvent e) {
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
@Override
public void mouseDragged(MouseEvent e) {
//obtiene posicion de la ventana
int thisX = parent.getLocation().x;
int thisY = parent.getLocation().y;
//determina el desplazamiento
int xMoved = (thisX + e.getX()) - (thisX + initialClick.x);
int yMoved = (thisY + e.getY()) - (thisY + initialClick.y);
//mueve la ventana a su nueva posicion
int X = thisX + xMoved;
int Y = thisY + yMoved;
parent.setLocation(X, Y);
}
@Override
public void mouseMoved(MouseEvent e) {}
public void setParent(JFrame parent) {
this.parent = parent;
}
}//End:class
Paso 4: Clic derecho sobre el proyecto y presiona «Clean and Build» o «Limpiar y Construir»
Paso 5: Abre en modo diseño el JFrame CircleFrame y arrastra hacia el la clase CirclePanel, ya podrás visualizar la forma circular del panel, aún pude verse el fondo del JFrame, eso lo eliminaremos a continuación.
Paso 6: Abre el JFrame CircleFrame en modo código y reemplaza el constructor de clase con las siguientes lineas
public CircleFrame() {
CircleFrame.this.setUndecorated(true);
initComponents();
CircleFrame.this.setLocationRelativeTo(null);
CircleFrame.this.setBackground(new Color(0,0,0,0));
CircleFrame.this.setVisible(true);
CircleFrame.this.circlePanel1.setParent(CircleFrame.this);
}
Lo que hacemos es quitar los bordes al JFrame con Undecorated, si o si debe declararse antes del initComponents, a continuación centramos en pantalla y asignamos un fondo transparente, finalmente pasamos como parámetro en el CirclePanel al JFrame.
Nuestro JFrame circular ya esta listo, puedes comenzar a insertar los restantes objetos, alinearlos y ejecutar el proyecto
Enlace de descarga AQUI (Actualizado 04/01/2026)
Enjoy!
En este post veremos una muy pequeña introducción de lo que es el mundo de la programación en shell de Linux. Necesitamo[...]
Existen muchos clientes REST disponibles tanto para instalar en tu PC como para utilizar directamente desde la nube, sin[...]
Como habíamos mencionado en un anterior post Ejemplo socket java Cliente/Servidor , el lenguaje de programación entre el[...]
En este post conocernos lo que son las Estructuras de Control IF en los script de Bash. Estas estructuras nos ayudan a c[...]
Estructura Interna de un archivo SVG. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD[...]
Segunda parte del tutorial «Crea un servicio web REST con PHP y MYSQL«, en esta segunda y ultima parte se completara la[...]