Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Disegnare linea mouse a partire dal centro finestra

    Ciao devo risolvere questo esercizio...mi potete aiutare postandomi qualcosa
    di già funzionante...non sono molto esperto sulla grafica.
    Grazie anticipate.

    Esercizio:"Scrivere un programma Java che apre una finestra e disegna una linea a partire dal centro della finestra fino a dove si trova il puntatore del mouse.NON USARE GLI APPLET"

    Non so se il mouse debba essere cliccato per abilitare il disegno
    della linea o se basti il semplice spostamento del puntatore all'interno
    della finestra.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Disegnare linea mouse a partire dal centro finestra

    Originariamente inviato da rosario.russo71
    "Scrivere un programma Java che apre una finestra e disegna una linea a partire dal centro della finestra fino a dove si trova il puntatore del mouse.NON USARE GLI APPLET"
    Ok, quindi come applicazione "desktop" tradizionale.

    Originariamente inviato da rosario.russo71
    Non so se il mouse debba essere cliccato per abilitare il disegno
    della linea o se basti il semplice spostamento del puntatore all'interno
    della finestra.
    Ecco, è questo che dovresti chiarire bene. Tu clicchi con il mouse una volta e si disegna la linea dopodiché resta quella, ferma lì? Oppure se riclicchi la linea deve spostarsi? O aggiungersi ad altre già esistenti? O ancora mentre muovi il mouse la linea in "tempo reale" cambia posizione?
    Insomma ... si può fare tutto questo, ma devi precisare come.

    Ah, una cosa: usando AWT o Swing?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ciao e grazie per la risposta...preferei con Swing ma se ti risulta
    più facile con Awt...la cosa importante no Applet.

    Io fare questa versione :
    1)Clicco sul mouse, si disegna la linea dal centro della finestra al punto in cui clicco con il mouse. Poi la linea rimane li e se riclicco se ne crea una nuova che si aggiunge a quella già esistente.

    Grazie anticipate.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rosario.russo71
    preferei con Swing
    Swing è moooolto meglio di AWT.

    Originariamente inviato da rosario.russo71
    1)Clicco sul mouse, si disegna la linea dal centro della finestra al punto in cui clicco con il mouse. Poi la linea rimane li e se riclicco se ne crea una nuova che si aggiunge a quella già esistente.
    Ok, ora è chiaro cosa vuoi.

    Conosci i concetti alla base del painting in Swing? Performing Custom Painting

    Quello che dovrai fare è estendere ad esempio JPanel, fare l'override di paintComponent() e disegnare lo "stato" del tuo componente. Ma lo "stato" è composto, stando a quanto chiedi, da un numero potenzialmente arbitrario (e che cresce) di linee diverse, aggiunte man mano che l'utente vuole.

    Quindi hai almeno 2 possibilità:
    a) Crei una immagine di NxM pixel, quando l'utente clicca, tu disegni la linea sulla immagine, richiedi il repaint del pannello e nel paintComponent() devi semplicemente disegnare la immagine sul Graphics

    b) Nel tuo pannello mantieni una lista (es, ArrayList o Vector) che contiene i punti sui cui hai cliccato. Quando l'utente clicca, aggiungi il punto nella lista e richiedi il repaint del pannello e nel paintComponent() devi iterare su tutta la lista e disegnare tutte le linee sul Graphics.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Scusa CERCAVO QUALCOSA DI GIA' SVIUPPATO...purtroppo non conosco bene queste librerie grafiche...sono a zero.

    Se ti può risultare più semplice si può anche solo disegnare la linea una sola volta
    senza mantenerle tutte o magari farla scomparire quando ri rilascia il pulsante del mouse...insomma il più semplice possibile.

  6. #6
    Ciao a tutti...questo programma disegna il mouse a mano libera...mi potreste
    indicare cosa modificare per fare in modo che ad un click del mouse nella
    finestra venga tracciata una linea dal centro della finestra al punto del click
    del mouse ?
    Grazie.

    codice:
    import javax.swing.*; 
    import java.awt.*; 
    import java.awt.Color.*; 
    import java.awt.event.*; 
    
    public class Painter extends JPanel { 
      private int startXPoint = 0;  // coordinata x di partenza 
      private int endXPoint = 0;    // coordinata x di arrivo 
      private int startYPoint = 0;  // coordinata y di partenza 
      private int endYPoint = 0;    // coordinata y di arrivo 
      private boolean paint = false; 
    
      // ascoltatore del moto del mouse 
      class mMotionListener implements MouseMotionListener { 
        public void mouseDragged(MouseEvent e) { 
          // aggiorna le coordinate 
          startXPoint = endXPoint; 
          startYPoint = endYPoint; 
          endXPoint = e.getX(); 
          endYPoint = e.getY(); 
          // disegna 
          Painter.this.repaint(); 
        } 
        public void mouseMoved(MouseEvent e) { 
          // aggiorna le coordinate 
          startXPoint = endXPoint; 
          startYPoint = endYPoint; 
          endXPoint = e.getX(); 
          endYPoint = e.getY();  
        } 
      } 
      // ascoltatore dei pulsanti del mouse 
      class mListener implements MouseListener { 
        // i seguenti metodi sono richiesti dalla 
        // interfaccia MouseListener anche se non 
        // vengono utilizzati  
        public void mouseClicked(MouseEvent e) {} 
        public void mouseEntered(MouseEvent e) {} 
        public void mouseExited(MouseEvent e)  {} 
    
        // pulsante premuto 
        public void mousePressed(MouseEvent e) { 
          // attiva la modalita' di disegno 
          paint = true;  
        } 
        // pulsante rilasciato 
        public void mouseReleased(MouseEvent e) { 
          // disattiva la modalita' di disegno 
          paint = false; 
        } 
      } 
      // Costruttore della classe principale 
      public Painter() { 
        super(); 
        MouseListener ml = new mListener(); 
        addMouseListener(ml); 
        MouseMotionListener mml = new mMotionListener(); 
        addMouseMotionListener(mml); 
      } 
      public void paint(Graphics g) { 
        // se e' attiva la modalita' di disegno, traccia una riga 
        if(paint) 
          g.drawLine(startXPoint,startYPoint,endXPoint,endYPoint); 
      } 
     public static void main(String argv[]) { 
        Painter p = new Painter(); 
        JFrame f = new JFrame("Painter"); 
        f.getContentPane().add(p); 
        f.setSize(400,300); 
        f.setVisible(true); 
     } 
    }

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da rosario.russo71
    Scusa CERCAVO QUALCOSA DI GIA' SVIUPPATO...purtroppo non conosco bene queste librerie grafiche...sono a zero.
    Per queste richieste esiste il forum "Offro Lavoro / Collaborazione"... Qui, al contrario, si trattano problemi di programmazione con del proprio codice che non funziona o su cui si chiedono consigli di miglioria/integrazione.

    Quello che chiedi tu è che qualcuno faccia il lavoro per te... in fin dei conti, se qualcuno ti deve fare gli esercizi è giusto che venga pagato per farlo...

    Possiamo continuare la discussione sulla traccia del programma che hai postato... ma siamo molto al limite...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.