1. DIBUJAR UNA LINEA Y CALCULAR LA DISTANCIA Y EL PUNTO MEDIO
· DISEÑO
Ejecución
CODIGO FUENTE
package applabgraficolinea;
public class Formulario extends javax.swing.JFrame {
/** Creates new form Formulario */
public Formulario() {
initComponents();
}
@SuppressWarnings("unchecked")
private void btnGraficarActionPerformed(java.awt.event.ActionEvent evt) {
//Leer cajas de texto a las variables instancia.
int xo= Integer.parseInt(this.txtXo.getText());
int yo= Integer.parseInt(this.txtYo.getText());
int x1= Integer.parseInt(this.txtX1.getText());
int y1= Integer.parseInt(this.txtY1.getText());
lienzo1.setXo(xo);
lienzo1.setYo(yo);
lienzo1.setX1(x1);
lienzo1.setY1(y1);
lienzo1.DibujarLinea();
Calculos C = new Calculos();
String d = String.valueOf(C.DistanciaPuntos(xo, yo, x1, y1));
this.txtDistancia.setText(d);
String p = String.valueOf(C.PuntoMedio());
this.txtPuntoMedio.setText(p);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Formulario().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnGraficar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JPanel jPanel1;
private applabgraficolinea.Lienzo lienzo1;
private javax.swing.JTextField txtDistancia;
private javax.swing.JTextField txtPuntoMedio;
private javax.swing.JTextField txtX1;
private javax.swing.JTextField txtXo;
private javax.swing.JTextField txtY1;
private javax.swing.JTextField txtYo;
}
Calculos.java
package applabgraficolinea;
public class Calculos
{
private double distancia;
public Calculos()
{
this.distancia =0;
}
public double DistanciaPuntos(int Xo, int Yo, int X1, int Y1)
{
this.distancia = Math.sqrt((Math.pow((X1-Xo),2)) +(Math.pow((Y1-Yo), 2)));
return this.distancia;
}
public double PuntoMedio()
{
double pm = this.distancia / 2;
return pm;
}
}
Lienzo.java
package applabgraficolinea;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel
{
//Implementando variables de instancia.
private int Xo, Yo;
private int X1,Y1;
//Implementar 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();
}
@Override
public void paint(Graphics g) {
super.paint(g);
//Algoritmo DDA mejorado
int dx = X1 - Xo;
int dy = Y1 - Yo;
g.setColor(Color.blue);
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 += dy;
Xo = Math.round(m * Yo + b);
g.drawLine( Xo, Yo, Xo, Yo);
}
}
}
public void DibujarLinea()
{
repaint();
}
@SuppressWarnings("unchecked")
Realizar un ejercicio que me permita ingresar las coordenadas que me dibuje una línea utilizando y frame con clase.
Pantalla Principal.java
Codigo Fuente
package labgraficacion01;
public class Principal extends javax.swing.JFrame {
/** Creates new form Principal */
public Principal() {
initComponents();
}
@SuppressWarnings("unchecked")
private void btnGraficarActionPerformed(java.awt.event.ActionEvent evt) {
//Leer cajas de texto
int xo = Integer.parseInt(this.txtXo.getText());
int yo = Integer.parseInt(this.txtYo.getText());
int x1 = Integer.parseInt(this.txtX1.getText());
int y1 = Integer.parseInt(this.txtY1.getText());
//Enviar valores a las variables instancia
lienzo1.setXo(xo);
lienzo1.setYo(yo);
lienzo1.setX1(x1);
lienzo1.setY1(y1);
//Llamar al metodo Paint
lienzo1.DibujarLinea();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Principal().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton btnGraficar;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JPanel jPanel1;
private labgraficacion01.Lienzo lienzo1;
private javax.swing.JTextField txtX1;
private javax.swing.JTextField txtXo;
private javax.swing.JTextField txtY1;
private javax.swing.JTextField txtYo;
}
· Pantalla del Lienzo. Java
· CODIGO FUENTE
package labgraficacion01;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel {
//Variables Instancia
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;
}
public Lienzo() {
initComponents();
}
@SuppressWarnings("unchecked")
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.blue);
g.drawLine(this.Xo,this.Yo, this.X1, this.Y1);
}
public void DibujarLinea()
{
repaint();
}}
· Pantalla de ejecución
Realizar un ejercicio con un formulario Apple me muestre la ejecución por el navegador web al momento de dar clic en el formulario la línea me grafique
· Código HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<div>Programacion Grafica en la web con applet de Java</div>
</body>
</html>
<applet code="aplicacionwebdibujandolinea.AppletForm" archive="AppletForm.jar" width="270" height="350">
</applet>
· Appletform.java
· Código Apple
package aplicacionwebdibujandolinea;
public class AppletForm extends javax.swing.JApplet {
/** Initializes the applet AppletForm */
public void init() {
try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
initComponents();
}
});
} catch (Exception ex) {
ex.printStackTrace();
} }
@SuppressWarnings("unchecked")
private void btngraficarActionPerformed(java.awt.event.ActionEvent evt) {
int ancho=Integer.parseInt(this.txtancho.getText());
lienzo1.setAncho(ancho);
lienzo1.DibujarLineaOrtogonal();
}
// Variables declaration - do not modify
private javax.swing.JButton btngraficar;
private javax.swing.JLabel jLabel1;
private aplicacionwebdibujandolinea.Lienzo lienzo1;
private javax.swing.JTextField txtancho;
// End of variables declaration
}
· Lienzo.java
· CODIGO
package aplicacionwebdibujandolinea;
import java.awt.*;
public class Lienzo extends javax.swing.JPanel
{
private int X0,Y0;
private int ancho;
public void setAncho(int ancho) {
this.ancho = ancho;
}
public Lienzo() {
initComponents();
this.X0=0;
this.Y0=0;
this.ancho=0;
}
@SuppressWarnings("unchecked")
private void MoussePresionar(java.awt.event.MouseEvent evt) {
this.X0=evt.getX();
this.Y0=evt.getY();
}
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.red);
g.drawLine(X0, X0, X0, ancho);
Procesamiento D=new Procesamiento();
String pm ="Punto medio =" +String.valueOf(D.PuntoMedio(ancho));
g.drawString(pm, 50, 110);
g.drawString(D.CoordenadaPunto2(X0, Y0, ancho),50,130);
}
public void DibujarLineaOrtogonal()
{
repaint();
}
}
· Código
package aplicacionwebdibujandolinea;
public class Procesamiento
{
public double PuntoMedio(int ancho)
{
return ancho/2;
}
public String CoordenadaPunto2(int X0,int Y0,int ancho)
{
int Y1=Y0+ancho;
String cadena="("+String.valueOf(X0)+","+String.valueOf(Y1)+")";
return cadena;
}}
· Pantalla de ejecución