27. februar 2003 - 16:35Der er
8 kommentarer og 1 løsning
Opdatering af brugergrænseflade - Hvordan undgår jeg flimmer?
Jeg har et problem med min GUI... Når jeg tegner nye objekter eller sletter nogen, kan det ikke ses på skærmen. Det har jeg klaret ved at skrive (GUI er en JFrame):
GUI.hide(); GUI.show();
Når GUI'en kommer frem igen er den opdateret, men det gør at det hele blinker hver gang jeg skal opdatere, og det kan da heller ikke være den rigtige måde, at gøre det på... Er der nogen, der kan hjælpe??
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Du skal overskrive paintComponent. Jeg forestiller mig noget lign. dette (kender ikke XYConstraints, så jeg har lavet det uden layout manager) import java.awt.*; import java.awt.event.*; import javax.swing.*;
public class GUI extends JFrame {
public GUI(String title) { super(title); getContentPane().setLayout(null); }
public static void main(String[] args) { final GUI frame = new GUI("Cirkel test"); frame.addCircle(new Circle(Color.blue), new Point(30,30), new Dimension(40,50)); frame.addCircle(new Circle(Color.red), new Point(30,60), new Dimension(70,50)); frame.addCircle(new Circle(Color.green), new Point(300,230), new Dimension(100,100)); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setSize(800,600); frame.setVisible(true); } }
class Circle extends JComponent {
Color c;
public Circle(Color c) { super(); this.c = c; // Dette er VIGTIGT. Ellers skal vi tegne i alle bytes!!! setOpaque(false); } public void paintComponent (Graphics g) { super.paintComponent(g); // essentielt // Vi sætter størrelsen eksternt. I paintComponent sørger vi // blot for at cirklen svarer til denne størrelse. // Vi ønsker en perfekt cirkel i midten Dimension dim = getSize();
Det er bare super fedt!! Nu kan jeg få det til at virke. Men jeg er ikke helt sikker på, at jeg forstår hvad jeg gjorde forkert.. men pyt :-) Hvad er det, der sker når du kører super()? Tusind tak for hjælpen. Hvis du lige smider et svar kan jeg give dig point...
Jep, jeg fandt ud af det i mellemtiden :-) Mange tak for hjælpen!
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.