Programación del JPalnel (Lienzo)
package labgraficacion01;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel {
private int Xo,Yo;
private int X1,Y1;
//Propiedades Escritura
public void setX1(int X1) {
this.X1 = X1;
}
public void setXo(int Xo) {
this.Xo = Xo;
}
public void setY1(int Y1) {
this.Y1 = Y1;
}
public void setYo(int Yo) {
this.Yo = Yo;
}
Método constructor (Este lo genera por defecto NetBeans)
public Lienzo() {
initComponents();
}
Soberescribimos el Metodo Paint
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
g.drawLine(this.Xo, this.Yo, this.X1,this.Y1);
}
Método para dibujar
public void Dibujarlinea()
{
repaint();
}
En la acción del botón Escribimos el siguiente código
private void btngraficarActionPerformed(java.awt.event.ActionEvent evt) {
//Leer cajas de texto
int xo = Integer.parseInt(this.txtX0.getText());
int yo = Integer.parseInt(this.txtY0.getText());
int x1 = Integer.parseInt(this.txtX1.getText());
int y1 = Integer.parseInt(this.txtY1.getText());
// Enviar variables a las variables de instancia
lienzo1.setXo(xo);
lienzo1.setYo(yo);
lienzo1.setX1(x1);
lienzo1.setY1(y1);
//LLamar al metodo paint
lienzo1.Dibujarlinea();
}
Vista de la aplicación ya ejecutada… Se coloco 4 campos de texto para ingresar las coordenadas de los puntos Y 4 etiquetas para indicar que valor se ingresara en los campos de texto, y por ultimo un botón para graficar.
Aplicación Grafica que Grafique una recta ingresando como coordenadas los puntos que serán los extremos de la misma y q además calcule la distancia entre los puntos y el punto medio. Utilizando El algoritmo DDA.
//Codigo de la clase Jpanel (Lienzo).
package appgraficojava;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel
{
//Variables de instancia
private int Xo,Yo,X1,Y1;
//Propiedades de escritura
public void setX1(int X1) {
this.X1 = X1;
}
public void setXo(int Xo) {
this.Xo = Xo;
}
public void setY1(int Y1) {
this.Y1 = Y1;
}
public void setYo(int Yo) {
this.Yo = Yo;
}
public Lienzo() {
initComponents();
}
//Aquí el algoritmo DDA sobre escribiendo el método paint
@Override
public void paint(Graphics g) {
super.paint(g);
int dx = X1-Xo;
int dy = Y1-Yo;
g.setColor(Color.RED);
if(Math.abs(dx)>Math.abs(dy))
{
float m=(float)dy/(float) dx;
float b=Yo-m*Xo;
if(dx<0)
dx = -1;
else
dx=1;
while (Xo!=X1)
{
Xo+=dx;
Yo=Math.round(m*Xo+b);
g.drawLine(Xo, Yo, Xo, Yo);
}
}else
if (dy!=0)
{
float m=(float)dx/(float) dy;
float b=Xo-m*Yo;
if(dy<0)
dy = -1;
else
dy=1;
while (Yo!=Y1)
{
Yo+=dx;
Xo=Math.round(m*Yo+b);
g.drawLine(Xo, Yo, Xo, Yo);
}
}
}
Método para dibujar
public void DibujarLinea()
{
repaint();
}
//Código de la clase Cálculos (donde calcularemos la distancia entre puntos y el punto medio)
package appgraficojava;
public class Calculos
{
private double distancia;
public Calculos()
{
this.distancia=0;
}
public double DistanciaPuntos(int X0,int Y0,int X1, int Y1)
{
distancia=Math.sqrt((Math.pow(X1-X0,2))+(Math.pow(Y1-Y0,2)));
return distancia;
}
public double PuntoMedio()
{
double pm=distancia/2;
return pm;
}
}
//Código del JFrame Donde se visualizara los resultados.
private void btnGraficacionActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int xo = Integer.parseInt(txtXo.getText());
int yo = Integer.parseInt(txtYo.getText());
int x1 = Integer.parseInt(txtX1.getText());
int y1 = Integer.parseInt(txtY1.getText());
lienzo1.setXo(xo);
lienzo1.setX1(x1);
lienzo1.setYo(yo);
lienzo1.setY1(y1);
lienzo1.DibujarLinea();
Calculos C =new Calculos();
String d = String.valueOf(C.DistanciaPuntos(xo, yo, x1, y1));
this.txtdistancia.setText(d);
String pm = String.valueOf(C.PuntoMedio());
this.txtpuntomedio.setText(pm);
}
Vista de la aplicación ya ejecutada.
Aplicación Grafica capaz de dibujar una línea ortogonal recibiendo como parámetros un ponto en el cual se da clic con el mouse y el Ancho (Tamaño de la linea), y que además calculara el punto medio de la línea. Ejecutara sobre un navegador web, Gracias a el uso del Formulario JApplet.
//Código del Lienzo
private int Xo,Yo,ancho;
/** Creates new form Lienzo */
public Lienzo() {
initComponents();
Xo=0;
Yo=0;
ancho=0;
}
public void setAncho(int ancho) {
this.ancho = ancho;
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.drawLine(Xo, Yo, Xo, ancho);
Procesos D = new Procesos();
String pm = "Punto Medio = "+ String.valueOf(D.puntomedio(ancho));
g.drawString(pm, 50,200 );
g.drawString(D.CoordenadasPunto2(Xo, Yo, ancho), 50, 220);
}
public void DibujarLineaortogonal()
{
repaint();
}
private void formMousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
Xo=evt.getX();
Yo=evt.getY();
}
package aplicacionwebapplet;
public class Procesos
{
public double puntomedio(int ancho)
{
return ancho/2;
}
//Código de la clase procesos para calcular la coordenada del punto Y1
public String CoordenadasPunto2(int Xo,int Yo,int ancho)
{
int Y1 = Yo + ancho;
String cadena = "("+String.valueOf(Xo)+","+String.valueOf(Y1)+")";
return cadena;
}
}
//Código del formulario principal(JApplet).
private void btngraficarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
int ancho = Integer.parseInt(txtancho.getText());
lienzo1.setAncho(ancho);
lienzo1.DibujarLineaortogonal();
}
//Código de la pagina web donde se va a ejecutar la aplicacion
Vista de la aplicación Ejecutada en el Navegador web.
Aplicación q grafica líneas utilizando como coordenadas las posiciones (Puntos) donde se da clic con el mouse.
//Coding del JPanel(Lienzo)
package lineaconcllic;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel {
private int Xo,Yo,X1,Y1,c;
/** Creates new form Lienzo */
public Lienzo() {
initComponents();
}
@Override
public void paint(Graphics g) {
super.paint(g);
int dx = X1-Xo;
int dy = Y1-Yo;
g.setColor(Color.BLACK);
if(Math.abs(dx)>Math.abs(dy))
{
float m=(float)dy/(float) dx;
float b=Yo-m*Xo;
if(dx<0)
dx = -1;
else
dx=1;
while (Xo!=X1)
{
Xo+=dx;
Yo=Math.round(m*Xo+b);
g.drawLine(Xo, Yo, Xo, Yo);
}
}else
if (dy!=0)
{
float m=(float)dx/(float) dy;
float b=Xo-m*Yo;
if(dy<0)
dy = -1;
else
dy=1;
while (Yo!=Y1)
{
Yo+=dx;
Xo=Math.round(m*Yo+b);
g.drawLine(Xo, Yo, Xo, Yo);
}
}
}
public void dibujarlinea()
{
repaint();
}
private void formMousePressed(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
c=c+1;
if (c==1){
Xo=evt.getX();
Yo=evt.getY();
}
if (c==2)
{
X1=evt.getX();
Y1=evt.getY();
c=0;
}
}
//Código del JApplet(Formulario principal)
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
lienzo1.dibujarlinea();
}
//Código de la pagina en la q se ejecutara el Apple
Vista del proyecto ya ejecutado en un navegador web