Java - Alternativa para dibujar barras sin repaint()

 
Vista:
sin imagen de perfil

Alternativa para dibujar barras sin repaint()

Publicado por Manuel Restrepo (1 intervención) el 30/10/2017 22:31:14
Hola buen día.

Necesito hacer un ejercicio pero la verdad estoy un poco enredado.
El tema es el siguiente, el usuario debe ingresar 4 datos y así mismo se debe graficar 4 líneas como tipo barras en el JPanel, el tema es que realizando el ciclo para solicitar los datos tengo un método repaint() que hace que borre las líneas ya pintadas y aparezca la nueva. ¿Cómo hacer para que a medida que el usuario ingrese los datos "el ancho de la barra", no se borre la anteriormente dibujada. Adjunto el código que llevo.

Les agradezco me puedan ayudar con esto, llevo bastante tiempo dándole al tema.

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
import javax.swing.JPanel;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
public class EjercicioCapitulo5 extends JPanel {
 
    int barras, y;
 
    public EjercicioCapitulo5() {
 
    }
 
    public void getbarra(int bar, int ejey) {
        barras = bar;
        y = ejey;
    }
 
    public void impresion() {
        System.out.println("El número ingresado es " + barras);
    }
 
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawRect(0, y, barras * 20, 10);
    }
 
    public static void main(String[] args) {
 
        int y=0;
        EjercicioCapitulo5 panel = new EjercicioCapitulo5();
        JFrame aplicacion = new JFrame();
        aplicacion.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        aplicacion.add(panel);
        aplicacion.setSize(400, 400);
        aplicacion.setVisible(true);
 
        for (int i = 1; i <= 4; i++) {
            String numero = JOptionPane.showInputDialog("Por favor ingrese el "+ i + "numero que debe estar entre 1 y 30");
            int num = Integer.parseInt(numero);
            y = y + 70;
            panel.getbarra(num,y);
            aplicacion.repaint();
            System.out.println(y);
        }
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