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

    Fac Simile Del Paint In Java

    Ciao a tutti avrei bisogno di realizzare un fac-simile del paint... qualcosa di più semplice in realtà devo simulare la "matita del paint" ovvero tenendo premuto il mouse e muovendomi deve scrivere.

    tutto questo sta in un riquadro dove per ora c'è un jpanel normale.

    Siccome cercando un po' in rete ho trovato anche troppo l'argomento grafica è parecchio vasto qualcuno sa dirmi più nello specifico che classi mi devo andare a guardare (a parte dire graphic) o meglio ancora segnalarmi qualche guida efficace ?

    grazie ciao a tutti

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Guarda se questo può esserti utile
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Puoi usare la classe JPanel (per Swing) o la classe Canvas (per AWT)

    Per Swing, guardati l'argomento "override del metodo paintComponent".

    Per AWT, guardati l'argomento "override del metodo paint".

    Per entrambi, i seguenti argomenti:
    "aggiunta di un MouseListener" e "aggiunta di un MouseMotionListener".

    Per quanto riguarda la classe Graphics, mi pare di capire che già la conosci.


    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

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    E già che ci sei, guarda tra i miei Java Examples, sezione Graphics. Non c'è esattamente un "paint-like" ma ci sono esempi sul disegno.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    grazie per le dritte, sono riuscito a far disegnare la linea come volevo, ora mi resta un solo problema, credo legato al repaint ma nn riesco a capire dove.

    Praticamente il pannello dove scrivo in stile matita è all'interno di un frame più grande dove faccio altre cose ora quando vado a disegnare nel pannello una parte del frame mi entra come sfondo del pannello come se venisse ridisegnata anche quella.

    Posto il codice:

    public class PaintPannello extends javax.swing.JPanel {

    private float lastX, lastY;
    private Line2D linea;
    private boolean richiestaRepaint;

    public PaintPannello()
    {
    initComponents();
    this.setSize(374,152);
    setLayout(new BorderLayout());
    this.addMouseListener(new HandleMouseClicked());
    this.addMouseMotionListener(new HandleMouseDragged());
    }

    private class HandleMouseClicked extends MouseAdapter
    {
    public void mousePressed(MouseEvent e)
    {
    lastX = e.getX();
    lastY = e.getY();
    }
    }

    private class HandleMouseDragged extends MouseMotionAdapter
    {
    public void mouseDragged(MouseEvent e)
    {
    int x = e.getX();
    int y = e.getY();
    linea = new Line2D.Double(lastX,lastY,x,y);
    lastX = x;
    lastY = y;
    richiestaRepaint = true;
    repaint();
    }
    }

    public void paintComponent(Graphics g)
    {
    Graphics2D g2 = (Graphics2D)g;
    if (richiestaRepaint)
    {
    richiestaRepaint = false;
    g2.setPaint(Color.BLACK);
    g2.setStroke(new BasicStroke(2));
    g2.draw(linea);
    }

    }

    public class Linea
    {
    public Line2D linea;
    Integer stroke;
    }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mharck87
    sono riuscito a far disegnare la linea come volevo, ora mi resta un solo problema, credo legato al repaint ma nn riesco a capire dove.
    Diciamo che non è proprio così che si dovrebbe fare. Partiamo dall'inizio: innanzitutto la questione fondamentale è che i disegni che fai sul pannello non sono "permanenti". Basta che ridimensioni il frame dove hai messo il pannello e qualunque disegno fatto sparisce. Questo perché l'approccio al painting non è il più appropriato.

    Poi ci sono due questioni tecniche minori.
    - Se il tuo disegno in paintComponent non "copre" tutta l'area del componente, allora dovresti invocare la versione "super" di paintComponent:
    super.paintComponent(g);
    - Infine usare il setSize serve solo se il tuo pannello l'hai aggiunto in un contenitore che non ha un layout manager, altrimenti è inutile. Non vedo il resto del codice per cui non posso sapere dove l'hai messo...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.