Java - Como crear un componente propio en java?

 
Vista:
sin imagen de perfil
Val: 82
Ha disminuido su posición en 6 puestos 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: 3.428
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 (1381 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: 15
Ha aumentado su posición en 6 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