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
Enjoy!
En este tutorial crearemos un interesante efecto de explosión al momento de abrir un JPanel, este efecto puede extenders[...]
En la estructura del proyecto, nuestro modelo mvc esta compuesto por tres paquetes, la vista, el modelo y controlador. L[...]
Java nos permite pasar parámetros a una aplicación empaquetada en un *.JAR mediante el MAIN de nuestro programa, pero cl[...]
Un JSpinner es un componente swing de java con una caja de texto y un par de botones que nos permiten incrementar y dec[...]
Un esquema XSD se utiliza para describir y validar la estructura y contenido de los datos de un documento XML. Un esquem[...]
En este tutorial veremos como pasar parámetros de un activity a otro activity, no hay mucho que decir así que manos a la[...]