Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220

    [JAVA] eventi che non si verificano

    heilà ragassi pare ultimamente che gli eventi siano in sciopero, parlo di MouseMotionListener e ComponentListener...vi spiego:

    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.LinkedList;
    import java.util.Iterator;

    public class TerraceGraphic extends JPanel{
    private LinkedList pointsList;
    private double xScale,yScale;
    private boolean paint;

    public TerraceGraphic(){
    addMouseListener(new MListener());
    addMouseMotionListener(new MMotionListener());
    addComponentListener(new CListener());

    pointsList=new LinkedList();
    paint=false;
    }

    public class CListener implements ComponentListener{
    public void componentHidden(ComponentEvent e){}
    public void componentMoved(ComponentEvent e){}
    public void componentResized(ComponentEvent e){}

    public void componentShown(ComponentEvent e){
    xScale=getWidth()/Constants.GRID_WIDTH;
    yScale=getHeight()/Constants.GRID_HEIGHT;
    repaint();
    }
    }

    public class MListener implements MouseListener{
    public void mouseClicked(MouseEvent e){}
    public void mouseEntered(MouseEvent e){}
    public void mouseExited(MouseEvent e){}

    public void mousePressed(MouseEvent e) {
    button=e.getButton();
    Point point=new Point((int)(e.getX()/xScale),(int)(e.getY()/ yScale));

    paint = true;
    pointsList.clear();
    pointsList.add(point);
    }
    }

    public class MMotionListener implements MouseMotionListener {
    public void mouseDragged(MouseEvent e) {
    button=e.getButton();
    Point point=new Point((int)(e.getX()/xScale),(int)(e.getY()/yScale));

    pointsList.clear();
    pointsList.add(point);

    repaint();
    }

    public void mouseMoved(MouseEvent e){}
    }

    public void paint(Graphics g){
    super.paint(g);

    Graphics2D g2D=(Graphics2D)g;
    setScale(g2D);

    if (paint){
    if (button==MouseEvent.BUTTON1){
    drawPoint((Point)pointsList.get(0));//funz.gia definita
    }
    if (button==MouseEvent.BUTTON3){
    cleanPoint((Point)pointsList.get(0));//funz.gia definita
    }
    }
    }
    }

    allora...non verificandosi l'evento ComponentListener non posso avere i fattori di scala! non funziona se xScale e yScale le assegno nel costruttore, perchè getWidth() e getHeight() ritornerebbero zero;
    e poi come vedete il codice di MouseMotionListener è uguale a quello di MouseListener...ma non va!! se clicco su un punto del grafico mi disegna il quadratino, ma in trascinamento non mi disegna proprio nulla...però almento quest'evento si verifica, ho fatto dei test, non è come ComponentListener che invece fa il dormiente!!!

    ho voluto usare un LinkedList per contenere i punti perchè in altri usi di MouseMotionListener ho bisogno di sapere tutti i punti di una certa funzione, per poter disegnare linee rette, cerchi e rettangoli...come un programma di disegno!

    bene bene...ora...aiutooo!!!! :master:

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220
    ah dimenticavo...questo oggetto è contenuto in un altro oggetto Jpanel...che è contenuto in un JTabbedPane....che è contenuto in un normale JFrame!! ufff... !!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220
    OK GENTE!!! ho capito la faccenda del MouseMotionListener... si trattava della riga
    button=e.getButton();
    che ha un significato diverso da MouseListener!!
    ora mi rimane da capire come mai ComponentListener dorme... :master:

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    220
    vi pregoooooo!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.