Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-09-2006, 15:45   #1
ali7.p
Junior Member
 
Iscritto dal: Jul 2006
Messaggi: 8
[JAVA] dove inserisco l'ascoltatore?

ho un problemino...

Devo realizzare una GUI utilizzando le Swing in cui viene visualizzata un'auto in corrispondenza delle coordinate che individuano la posizione del mouse ognivolta che effettuo un click.
Io ho creato la GUI, ho creato il metodo che disegna l'auto, ho creato anche l'asoltatore... ma dove lo inserisco?!

ho provato a metterlo in tutti i punti, non riesco a farlo funzionare!!!!


Codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.awt.geom.*;
 
class Auto extends JPanel{
    public static int x,y;

    public void paintComponent(Graphics g) {
            super.paintComponent(g);
            Graphics2D g2=(Graphics2D)g;
            g2.drawLine((x-10),(y-10),(x+10),(y-10) );
            g2.drawLine((x-10),(y-10),(x-20),y);
            g2.drawLine((x-20),y,(x-20),(y+10));
            g2.drawLine((x-20),(y+10),(x+30),(y+10));
            g2.drawLine((x+30),(y+10),(x+30),(y+5));
            g2.drawLine((x+30),(y+5),(x+10),(y-10));
            Area r1=new Area(new Ellipse2D.Double((x-10),(y+5),7,7));
            Area r2=new Area(new Ellipse2D.Double((x+15),(y+5),7,7));
            g2.fill(r1);
            g2.fill(r2);
        }
}
 

class AscPD extends  MouseAdapter {
    public void mouseClicked(MouseEvent e) {
            Auto.x=e.getX();
            Auto.y=e.getY();
    }
}
 
class VeicoliGUI extends JFrame {
    private Auto auto;  

       public VeicoliGUI(){
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            String s=getClass().getName();
            setTitle(s);
            setSize(600,400);
            setLayout(new BorderLayout());
             Container c=getContentPane();
            auto=new Auto();
            c.add(auto);
            setVisible(true);
    }

     public static void main (String[] args) {
           VeicoliGUI p=new VeicoliGUI();
    }
}
ali7.p è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2006, 16:22   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da ali7.p
Devo realizzare una GUI utilizzando le Swing in cui viene visualizzata un'auto in corrispondenza delle coordinate che individuano la posizione del mouse ognivolta che effettuo un click.
Io ho creato la GUI, ho creato il metodo che disegna l'auto, ho creato anche l'asoltatore... ma dove lo inserisco?!

ho provato a metterlo in tutti i punti, non riesco a farlo funzionare!!!!
Ciao, la classe VeicoliGUI direi che va bene. Per il resto, ti posto il codice modificato per la classe Auto.

Codice:
class Auto extends JPanel {
    public int x,y;

    public Auto()
    {
        addMouseListener (new MouseClickListener ());
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2=(Graphics2D)g;
        g2.drawLine((x-10),(y-10),(x+10),(y-10) );
        g2.drawLine((x-10),(y-10),(x-20),y);
        g2.drawLine((x-20),y,(x-20),(y+10));
        g2.drawLine((x-20),(y+10),(x+30),(y+10));
        g2.drawLine((x+30),(y+10),(x+30),(y+5));
        g2.drawLine((x+30),(y+5),(x+10),(y-10));
        Area r1=new Area(new Ellipse2D.Double((x-10),(y+5),7,7));
        Area r2=new Area(new Ellipse2D.Double((x+15),(y+5),7,7));
        g2.fill(r1);
        g2.fill(r2);
    }

    class MouseClickListener extends MouseAdapter {
        public void mouseClicked(MouseEvent e) {
            x = e.getX();
            y = e.getY();
            repaint ();
        }
    }
}
Nota che ho tolto lo static nella dichiarazione di int x,y (perché volevi renderli "di classe" invece "di istanza"???).

Inoltre ho sfruttato le classi innestate, che in questo caso solo l'ideale. Nel costruttore di Auto ho "registrato" il listener. E nel listener, imposto x/y e poi faccio un repaint.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2006, 22:16   #3
ali7.p
Junior Member
 
Iscritto dal: Jul 2006
Messaggi: 8
il mio problema era e rimane che non volglio ridisegnare il pannello... ma che venga aggiunta un'auto ogni volta che clicco sul pannello...
ali7.p è offline   Rispondi citando il messaggio o parte di esso
Old 04-09-2006, 22:27   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da ali7.p
il mio problema era e rimane che non volglio ridisegnare il pannello... ma che venga aggiunta un'auto ogni volta che clicco sul pannello...
Allora la cosa è un po' diversa.

Quando viene chiamato il metodo paintComponent, il componente si deve preoccupare di (ri)disegnare tutto quello che serve. Quindi il repaint() non lo puoi evitare (può avvenire se ridimensioni la finestra, per esempio) e devi comunque chiamarlo a seguito di una modifica operata dall'utente (nel tuo caso l'aggiunta di una macchina).

La soluzione quindi è quella di avere, al posto delle variabili x/y, una lista (ArrayList va bene) che contiene oggetti di tipo Point. Ad ogni click, aggiungi il punto alla lista e fai repaint(). Nel metodo paintComponent scansioni la lista e disegni tutte le macchine.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Micron mette in produzione il primo SSD ...
Bloober Team annuncia ufficialmente Laye...
Altro che semplice friggitrice ad aria: ...
Hypersonica testa in Norvegia un missile...
Microsoft impedisce il download delle IS...
Polti Vaporetto SV450 Double: scopa a va...
Xiaomi prepara il terreno per Android 17...
Sony lancia nel Regno Unito il programma...
NFT in caduta libera: il Bored Ape di Ju...
Skil amplia la gamma nel 2026: prato, ta...
Sony WF-1000XM5 a 179€ o Bose QuietComfo...
La community resuscita Unreal Tournament...
Un satellite da 500 kg volerà usa...
4 portatili intorno ai 1000€: molto pi&u...
ChatGPT nel mirino degli attivisti: nasc...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:44.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v