Jeg sender repaint() til et JComponent... og mærkeligt nok så når den ikke at få ændret alle de ting som paintComponent() burde inden linjerne efter repaint() bliver kørt
Din repaint bliver skeduleret bagest i eventkøen, og bliver behandlet når eventkøen når dertil. Hvis du virkelig skal sikre dig nogle ting er sket, skal du have en ekstra tråd med i billedet.
Nu ved jeg ikke om repaintet sker som følge af et event, men lad mig vise et eksempel på, hvordan det kan gøres ifm et ActionEvent fra en eller anden komponent:
public void actionPerformed(ActionEvent e) {
// Schedule a separate task which does not block the event queue processing new Thread(new Runnable() { public void run() { doSomethingOrOther();
// Schedule an update and a paint request and wait. SwingUtilities.invokeAndWait(new Runnable() { public void run() { label.setText(\"Set properties in GUI thread, always a good idea\"); label.invalidate(); RepaintManager.getCurrentManager(label).repaintDirtyRegions(); } });
// That was it. } }).start(); // Spin off the thread. }
Hvis du skal repainte en JComponent kan du også vælge at bruge paintImmediately(int x,int y,int w,int h). Den repainter det angive areal (på JComponent\'en) med det samme og ikke, som ved almindelig repaint, når der bliver tid til det.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.