Java - Ayuda con codigo - POO

   
Vista:

Ayuda con codigo - POO

Publicado por Daniel (4 intervenciones) el 24/03/2017 23:44:27
Construir una aplicación en lenguaje Java, orientada a objetos y con interfaz gráfica que calcule la distancia entre dos puntos. Las coordenadas de cada punto deben ser solicitadas al usuario mediante la interfaz gráfica.

Esto es lo que tengo hecho, el problema es que no se como hacer que el boton "BUSCAR" ejecute la accion que esta en la clase Punto (getDistancia)

Aqui el codigo:

MAIN:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class PrincipalObjeto {
 
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
 
        VentanaPrincipal vp = new VentanaPrincipal();
 
        vp.setTitle("Distancia Entre dos Puntos");
        vp.setSize(300, 100);
        vp.setResizable(Boolean.FALSE);
 
        vp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        vp.setVisible(Boolean.TRUE);
 
        vp.pack();
    }
 
}


CLASE PUNTO;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public class Punto {
 
    double X1, Y1;
    double X2, Y2;
 
    private Punto(double X1, double Y1, double X2, double Y2) {
 
        this.X1 = X1;
        this.Y1 = Y1;
        this.X2 = X2;
        this.Y2 = Y2;
    }
 
 
    public double getX1() {
 
        return X1;
    }
 
    public void setX1(double X1) {
        this.X1 = X1;
    }
 
    public double getY1() {
 
        return Y1;
    }
 
    public void setY1(double Y1) {
        this.X1 = Y1;
    }
 
    public double getX2() {
 
        return X2;
    }
 
    public void setX2(double X2) {
        this.X1 = X2;
    }
 
    public double getY2() {
 
        return Y2;
 
    }
 
    public void setY2(double Y2) {
        this.Y2 = Y2;
    }
 
    public double getDistancia() {
 
        return (double) Math.sqrt(Math.pow(X2 - X1, 2) + Math.pow(Y2 - Y1, 2));
    }
}

CLASE VENTANA PRINCIPAL;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
public class VentanaPrincipal extends JFrame implements ActionListener{
    private JLabel labelX1;
    private JLabel labelY1;
    private JLabel labelX2;
    private JLabel labelY2;
    private JTextField textoX1;
    private JTextField textoY1;
    private JTextField textoX2;
    private JTextField textoY2;
    private JButton btnLimpiar;
    private JButton btnBuscar;
    private JPanel panelDatos;
    private JPanel panelBotones;
 
    public VentanaPrincipal(){
        labelX1 = new JLabel("Punto X1");
        labelY1 = new JLabel("Punto Y1");
        labelX2 = new JLabel("Punto X2");
        labelY2 = new JLabel("Punto Y2");
        textoX1 = new JTextField();
        textoY1 = new JTextField();
        textoX2 = new JTextField();
        textoY2 = new JTextField();
        btnLimpiar = new JButton("Limpiar");
        btnBuscar = new JButton("Buscar");
        panelDatos = new JPanel();
        panelBotones = new JPanel();
 
        initGui();
    }
 private void initGui(){
        GridLayout layoutDatos = new GridLayout(2,2);
        layoutDatos.setHgap(2);
        panelDatos.setLayout(layoutDatos);
        panelDatos.add(labelX1);
        panelDatos.add(textoX1);
        panelDatos.add(labelY1);
        panelDatos.add(textoY1);
        panelDatos.add(labelX2);
        panelDatos.add(textoX2);
        panelDatos.add(labelY2);
        panelDatos.add(textoY2);
 
 
        panelBotones.setLayout(new FlowLayout());
        panelBotones.add(btnBuscar);
        panelBotones.add(btnLimpiar);
 
        this.add(panelDatos,BorderLayout.CENTER);
        this.add(panelBotones,BorderLayout.SOUTH);
 
        btnBuscar.setActionCommand("BUSCAR");
        btnLimpiar.setActionCommand("LIMPIAR");
 
        btnBuscar.addActionListener(this);
        btnLimpiar.addActionListener(this);
 
    }
  @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getActionCommand().equals("LIMPIAR")){
            this.textoX1.setText("");
            this.textoY1.setText("");
            this.textoX2.setText("");
            this.textoY2.setText("");
 
        } else
        {
            if(e.getActionCommand().equals("GUARDAR")){
                Punto p = new Punto(//Se quiere agregar el metodo p.getRespuesta() ));
 
                JOptionPane.showMessageDialog(this,p);
            }
        }
    }
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ayuda con codigo - POO

Publicado por Andrés (337 intervenciones) el 25/03/2017 03:02:00
Usa: if(e.getActionCommand().equals("BUSCAR")), te anexo un proyecto en el que te puedes basar, esta en netbeans.

Screenshot-from-2017-03-24-19-55-18
Screenshot-from-2017-03-24-19-56-04

Best,
Andrés
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con codigo - POO

Publicado por Daniel (4 intervenciones) el 25/03/2017 20:27:44
Hola, ya he corregido eso, pero aun asi no se como hacer que al presionar el botón "BUSCAR", ejecute lo que esta en la clase punto.

En ese punto del codigo pongo esto:

1
2
3
4
5
if(e.getActionCommand().equals("BUSCAR"))
{
    Punto p = new Punto(p.getDistancia());
 
    JOptionPane.showMessageDialog(this,p);

Pero me arroja este error:


1111

Y ahi no se como aplicarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con codigo - POO

Publicado por juanki (131 intervenciones) el 25/03/2017 20:38:41
Hola

El error es claro, has declarado el constructor de Punto que recibe 4 parámetros y lo estás llamando solo con uno.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con codigo - POO

Publicado por Daniel (4 intervenciones) el 25/03/2017 21:41:42
Hola, gracias por la correccion.

Ya he puesto los 4 parametros en esa porcion del codigo, pero aun asi, no ejecuta la porcion que me da la distancia entre dos puntos, dado que "p no esta inicializado".

Que deberia de hacer, despues de esto?

1
2
3
if(e.getActionCommand().equals("BUSCAR"))
{
    Punto p = new Punto (p.X1,p.Y1,p.X2,p.Y2,p.getDistancia());
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con codigo - POO

Publicado por Andrés andres.mella.romero@gmail.com (337 intervenciones) el 26/03/2017 08:45:25
1
2
3
4
5
6
7
8
9
if(e.getActionCommand().equals("BUSCAR"))
{
    Punto p = new Punto (
        Double.parseDouble(textoX1.getText()),
        Double.parseDouble(textoY1.getText()),
        Double.parseDouble(textoX2.getText()),
        Double.parseDouble(textoY2.getText()));
    JOptionPane.showMessageDialog(this,p.getDistancia());
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con codigo - POO

Publicado por juanki (131 intervenciones) el 26/03/2017 12:49:11
Hola

Es que no lo estás planteando bien, tienes que modificar la clase punto para que el método getDistancia reciba el punto con el que quieres calcular la distancia y que cada punto solo tenga unas coordenadas, las suyas, para que quieres guardar en un punto las coordenadas de dos puntos, yo al menos lo veo más lógico y entendible así:

1
2
3
4
Punto p1 = new Punto(1, 1);
Punto p2 = new Punto(2, 2);
 
double distancia = p1.getDistancia(p2);
Para eso tienes que modificar el método getDistancia y que reciba otro punto para calcular la distancia.

El código que pusiste estás tratando de crear un punto, pero le pasas como parámetros ese mismo punto que intentas crear, de funcionar, tendrás dos puntos iguales, no la distancia entre dos puntos.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar