Java - Como crear un componente propio en java?

 
Vista:
sin imagen de perfil
Val: 119
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Como crear un componente propio en java?

Publicado por System.out.println("Me llamo Carlos") (43 intervenciones) el 17/08/2020 17:07:26
Como puedo crear un componente en java? Estoy programando una especie de "pong", y necesito saber como hacerlo, para crear la pelota y las barras laterales. Para quien no sepa que es el pong, os dejo un video donde se puede ver como funciona el juego https://www.youtube.com/watch?v=fiShX2pTz9A&t=22s


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
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
 
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
public class PongMain {
 
public static void main(String[] args) {
 
FramePong pong = new FramePong ();
}
 
}
 
class FramePong extends JFrame {
 
public FramePong() {
 
setTitle("Pong (Echo por mi)");
 
setResizable(false);
 
setBounds(450, 140, 500, 500);
 
add(new LaminaPong ());
 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
setVisible(true);
}
}
 
class LaminaPong extends JPanel {
 
private int j1;
 
private int j2;
 
public LaminaPong() {
 
setLayout(new BorderLayout());
 
JPanel paneNorte = new JPanel ();
 
JLabel label = new JLabel ("Puntuacion : " + j1 + " - " + j2);
 
label.setFont(new Font ("Arial", Font.PLAIN, 18));
 
paneNorte.add(label);
 
add(paneNorte, BorderLayout.NORTH);
 
setBackground(Color.BLACK);
}
}

Necesito crear la bola, y las barras laterales que salen en ese video, pero como digo, no se como crear un componente.
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
Imágen de perfil de Kabuto
Val: 2.717
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Como crear un componente propio en java?

Publicado por Kabuto (706 intervenciones) el 18/08/2020 12:44:29
Tal vez puedas "dibujarlos" con la clase Polygon.

Échale un vistazo a este tema, quizás te sirva de inspiración
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Rolando
Val: 14
Ha aumentado su posición en 56 puestos en Java (en relación al último mes)
Gráfica de Java

Como crear un componente propio en java?

Publicado por Rolando (3 intervenciones) el 18/08/2020 14:46:21
Saludos. Por cuestiones económicas no puedo ver el vídeo del pong, pero me hago una idea de cómo es, yo estoy en un ejercicio parecido.
Te recomiendo hacer lo siguiente:
1-la lámina dónde vas a pintar tanto la pelota como las barras no extienden de JPanel sino de Canvas es un panel también pero destinado a gráficos, en el encontrarás el método repaint() que te refresca la pantalla
2- Has una clase pelota la cual va a tener propiedades como tam_x, tam_y, pos_x, pos_y, dirección. Esta pelota además debe de tener varios métodos cómo: A Generar una posición inicial B Mover la pelota C uno q devuelve el los 4 datos q te mencioné anteriormente en forma de Ellipse2D para luego pintar esa ellipse en Canvas. Con ella podrás saber si su shape (ciruela o contorno) intercepta tus barras o contiene ciertos puntos de la pantalla y así poder hacer que cambie de dirección como si rebotase
3- con un hilo o timer en otra clase no en pelota ni en Canvas sino en una q te gestione la lógica del juego mandas a mover la pelota y refrescar la pantalla más agregar las demás funciones de tu programa
TE DEJO UNA CLASE PELOTA DE UN CURSO DE JAVA PARA Q TENGAS UNA IDEA DE COMO HACERLA
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
public class Pelota{
    private int TAMX = 30;
    private int TAMY = 30;
 
    private int limite_pantalla_x;
    private int limite_pantalla_y;
 
    private double x;
    private double y;
    private int direccion;
 
    Dimension dimencion;
    public Pelota(Dimension pantalla){
        limite_pantalla_x = pantalla.width;
        limite_pantalla_y = pantalla.height;
 
        x = this.GetPointsX();
        y = this.GetPointsY();
        direccion = Direccion();
    }
 
//------------------------------Mover la pelota---------------------------------
    public Dimension Mueve_pelota(){
 
        if (direccion == 1){
            x--;
            y--;
            if (x == 0)
                    direccion = 2;
            if (y == 0)
                direccion = 4;
        }
        if (direccion == 2){
            x++;
            y--;
            if (x == (limite_pantalla_x - TAMX))
                    direccion = 1;
            if (y == 0)
                direccion = 3;
        }
        if (direccion == 3){
            x++;
            y++;
            if (x == (limite_pantalla_x - TAMX))
                    direccion = 4;
            if (y == (limite_pantalla_y - TAMY))
                direccion = 2;
        }
        if (direccion == 4){
            x--;
            y++;
            if (x == 0)
                direccion = 3;
            if (y == (limite_pantalla_y - TAMY))
                direccion = 1;
        }
 
        return new Dimension((int)x,(int)y);
    }
 
        /*	Metodo que da la coordenada X inicial	*/
    private int GetPointsX(){
        int num;
        do{
                num = (int)Math.round(Math.random() * 10000);
        }while(num >= limite_pantalla_x - TAMX);
        return num;
    }
 
    /*	Metodo que da la coordenada Y inicial	*/
    private int GetPointsY(){
        int num;
        do{
            num = (int)Math.round(Math.random() * 10000);
        }while(num >= limite_pantalla_y - TAMY);
        return num;
    }
 
    /*	Metodo que da la direccion inicial de la bolita	*/
    private int Direccion(){
        int num;
        do{
            num = (int)Math.round(Math.random()*10);
        }while((num > 4) || (num == 0));
        return num;
    }
 
//---------------------------Dibujo de la Pelota--------------------------------
    public Ellipse2D Get_shape(){
        return new Ellipse2D.Double(x, y, TAMX, TAMY);
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 119
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Como crear un componente propio en java?

Publicado por System.out.println("Me llamo Carlos") (43 intervenciones) el 18/08/2020 15:48:58
Muchas gracias!! Lo intentare.
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