Avatar billede thomasmx Nybegynder
20. februar 2001 - 12:31 Der er 4 kommentarer og
1 løsning

Hvordan implementerer man en MouseMotionEvent i en For løkke?

Se subjekt.

Mvh Th
Avatar billede pstric Nybegynder
20. februar 2001 - 12:33 #1
Hvorfor ville man dog gøre det. Forklar lidt nærmere, hvad det er du har tænkt dig.
Avatar billede thomasmx Nybegynder
20. februar 2001 - 12:54 #2
Problemet er, at jeg skal have en screensaver til at køre, og at den skal lytte til en MouseMotionListener.... min saver bruger en løkke til at tegne nogle prikker, men jeg kan ikke få den til at svare på fx en luk handling før løkken er kørt til ende... prøv evt. at se koden. Min MotionListener skulle gerne bevirke, at programmet lukkes ned...


*
* screenSaver.java
*
* Created on 18. februar 2001, 17:23
*/


/**
*
* @author  Edwin Stanton Spence
* @version
*/

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

public class screenSaver extends javax.swing.JFrame implements MouseMotionListener, ActionListener {
int Var, Dar, x;  //global dekleration af variable
   
    /** Creates new form screenSaver */
    public screenSaver() {
        initComponents ();
        pack ();
       
  double width = Toolkit.getDefaultToolkit().getScreenSize().getWidth();
  double height = Toolkit.getDefaultToolkit().getScreenSize().getHeight();   
 

Var=(int)width; //convert double to int
Dar=(int)height; //convert double to int

        setSize(Var,Dar);
        setVisible(true);
        setBackground (Color.yellow);
        setDefaultCloseOperation (WindowConstants.DISPOSE_ON_CLOSE);
        addMouseMotionListener (this);
        setVisible (true);
        //addMouseListner(this);              ///KAN IKKE IMPLEMENTERE MOUSELISTER
        //addMouseMotionListner (this);
        //System.out.println (Var);
        //System.out.println (Dar);
       
               
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        //System.exit (0);
       
        dispose ();
    }
   
   
   
    public void paint (Graphics g) {

       
        Graphics2D g2d = (Graphics2D) g;
       
       
        //rotate around origin and draw starts in random colors
        for (int j = 1; j <= 1100; j++){
                       
           
            //g2d.rotate(x*5);
            g2d.setColor(
                new Color ((int)(Math.random()*256),
                (int) (Math.random() * 256),
                (int) (Math.random() *256)));
                    double sideDouble = Math.random();
                    double laengdeDouble = Math.random();
                                                         
                    int sideInteger =(int)(sideDouble*100);
                    int laengdeInteger=(int)(laengdeDouble*100);
                   
                    sideInteger = sideInteger*Var/100;
                    laengdeInteger = laengdeInteger*Dar/100;
                                       
                g2d.fillArc (sideInteger, laengdeInteger, 80, 40, 0, 360);
               
                for (int i = 1; i <= 1009000; i++){}//delay counter
               
        }
        //System.exit(0);
    }
   
    /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the FormEditor.
    */
    private void initComponents () {
        addWindowListener (new java.awt.event.WindowAdapter () {
            public void windowClosing (java.awt.event.WindowEvent evt) {
                exitForm (evt);
            }
        }
        );

    }

    /** Exit the Application *//*
    private void exitForm(java.awt.event.WindowEvent evt) {
        //System.exit (0);
       
        dispose ();
    }
*/
    /**
    * @param args the command line arguments
    **/
    public static void main (String args[]) {
        screenSaver app = new screenSaver();
       
    }

    public void mouseDragged(java.awt.event.MouseEvent p1) {
    }   

    public void mouseMoved(java.awt.event.MouseEvent p1) {
        //System.exit(0);
        //MouseVariable = 0;
        //dispose ();
       
    }
   
    // Variables declaration - do not modify
    // End of variables declaration

    public void actionPerformed(final java.awt.event.ActionEvent p1) {
        dispose ();
    }
}
***************************
håber, det hjælper ;))
Avatar billede pstric Nybegynder
20. februar 2001 - 13:19 #3
Problemet er, at de messages, der er kommet ind - blandt andet musebevægelser - først bliver undersøgt, når paint() er færdig. Jeg er ikke klar over, hvordan du får Java til at undersøge messagequeue\'n inde i løkken, men måske kan det give dig et hint, at det i Delphi klares med Application.ProcessMessages. Det kan være du kan finde noget tilsvarende. Ellers må du dele din paint op i mindre bidder og lade den køre i en separat Thread.
Avatar billede thomasmx Nybegynder
20. februar 2001 - 13:28 #4
Tak for svaret... det vil jeg lige kigge på!! Vender tilbage...
Avatar billede thomasmx Nybegynder
23. juli 2002 - 09:08 #5
oki
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester