repaint() überlappt alles
-
huhu ihrs,
ich will in einem frame eifnach eine zahl hochzählen.
Das Problem sit dass nach dem ersten repaint einfach alles aufeinandergeschrieben wird, also alles überlappt.
Habt ihr eine Idee wie ich das verhindern kann :)?
Hab schon paar sachen versuch hat aber alles nix gebracht.
danke euchimport java.util.*; import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.*; import java.awt.Container; import java.awt.Graphics; import java.awt.Color; public class Test { public static void main(String [] args) { Timer t = new Timer(); t.schedule(new Read(), 1000, 1000); } } class Read extends TimerTask { private JFrame frame = new JFrame(); private myJPanel panel = new myJPanel(); Container inhalt; int count=0; Read() { frame.setSize(200, 120); frame.setTitle("Test"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); inhalt = frame.getContentPane(); inhalt.add(panel); frame.show(); } public void run() { panel.myRepaint(count++); } } class myJPanel extends JPanel { private String count = new String(); public void paintComponent(Graphics g) { g.setColor(Color.black); g.drawString( count , 20, 30); } public void myRepaint(int count) { this.count = String.valueOf(count); repaint(); } }
-
Hats einen tieferen Sinn, dass Du nicht einfach ein JLabel nimmst?
-
Hi,
wenn ich mich nicht irre, sollte ein super.paintComponent(g) in der paintComponent Methode reichen.
public void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.black); g.drawString( count , 20, 30); }
Hoffe das hilft.