Problema con el método Java repintado (). Repintar JPanel desaparecerá componentes pintados en JFrame

Creé una clase separada para JFrame y JPanel, luego dibujo (fillOval en una clase JFrame) y draw (fillOval en una clase JPanel), y un botón que solo animará los componentes de JPanel. Pero el problema es que cada vez que repinto la clase JPanel; ---- Los componentes JFrame desaparecieron. No entiendo por qué está sucediendo esto. Quiero que el componente JFrame sea permanente para cada animación realizada en la clase JPanel.

Código de muestra:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TryRepaintIssue extends JFrame
{
    public TryRepaintIssue(){
       thePanel panel = new thePanel();
       add(panel);
       setSize(1000,1000);
       setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       setVisible(true);
    }

    public void paint(Graphics g){
        super.paint(g);
        g.fillOval(100,500,100,100);
    }
    public static void main(String[] args){
        new TryRepaintIssue();
    }

    public static class thePanel extends JPanel{
        private int y = 100, vector = 1;
        public thePanel(){
            JButton button = new JButton("Play");
            button.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent ae){
                    y += vector;
                    repaint();
                }
            });
            add(button);
        }
        public void paintComponent(Graphics g){
            super.paintComponent(g);
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(Color.red);
            g2.fillOval(100,y,100,100);
        }
    }
}
Respuesta 1

No debe anular JFrame.paint, especialmente sin llamar al super. Por lo general, el dibujo en estas situaciones se realiza en un panel de vidrio .

Respuesta: 2

¿Hay alguna manera de averiguar el tamaño de la imagen (en bytes, en cualquier formato de imagen comprimido en el que estén almacenados) en PDImageXObject sin extraerlo en BufferedImage?

Esto es lo que he intentado. varOne largo = 902621492492L; double varTwo = (double) varOne * 0.0001; System.out.println (varTwo); Salida: 9.02621492492E7. ¿Por qué no es 90262149.2492 y cómo lo soluciono? ...

Todo parece estar funcionando bien. Puede encontrar mi ubicación, pero no llamará al método onLocationChanged () y creará un marcador para mí. ¿Algunas ideas? clase pública MainActivity extiende ...

Utilizo un programa que devuelve datos cuya marca de tiempo está en objetos de fecha Java. Necesito leer la hora en Matlab y poder hacer aritmética de fecha y hora con matrices de fecha y hora generadas en Matlab que pueden ...