Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Opera Neon: il browser AI agentico di nuova generazione
Opera Neon: il browser AI agentico di nuova generazione
Abbiamo provato il nuovo web browser con intelligenza artificiale della serie Opera accessibile tramite abbonamento. Ecco le nostre prime impressioni sulle funzionalità di Opera Neon basate su AI e come funzionano
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-11-2010, 14:27   #1
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
[Java] Aiuto su modifica codice

Ho la seguente classe in java:
Codice:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.MouseEvent;

import javax.swing.JOptionPane;

import core.Input;

public class InputComponent extends AbstractComponent implements CircuitComponent{

    private static final long serialVersionUID = 1L;
    private LinkComponent link;
    private boolean isLinked;
    
    public InputComponent(String n, CircuitComponent c,CircuitPanel p){
        initPortComponent(n,c,p);
        int w,h;
        w=20;
        h=20;
        getBounds().setSize(w, h);
        setPreferredSize(new Dimension(w,h));
        port=new Input(name);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if(isLinked==true){
                    JOptionPane.showMessageDialog(null, "Non e' possibile un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
                }
                else {
                    if(panel.getFunction()==CircuitPanel.PAINT_LINK_FROM){
                        panel.setLink(new LinkComponent(panel));
                        panel.getLink().setDest(getMe());
                        link=panel.getLink();
                        isLinked=true;
                        panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),true);
                        panel.doOperations(new PaintLinkOperations(panel,panel.getFacade().getColor()));
                        panel.setFunction(CircuitPanel.PAINT_LINE);
                    }
                    else if(panel.getFunction()==CircuitPanel.PAINT_LINE){
                        panel.getLink().setDest(getMe());
                        link=panel.getLink();
                        isLinked=true;
                        panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),false);
                        panel.getLink().updateSize();
                        CircuitComponent source = panel.getLink().getSource();
                        CircuitComponent dest = panel.getLink().getDest();
                        panel.repaint();
                        panel.setFunction(CircuitPanel.SELECTION);
                    }
                    else{}
                }
            }
        });
    }
    
    public LinkComponent getLink(){
        return link;
    }
    
    public void setLink(LinkComponent l){
        isLinked=true;
        link=l;
    }
    
    public void unsetLink(){
        isLinked=false;
    }
    
    public boolean isLinked(){
        return isLinked;
    }
    
    public void paintComponent(Graphics g){
    	if(name.startsWith("."));
    	else{
          g.setColor(color);
          if(name.contains("=0*")||name.contains("=1*")){
        	  g.drawLine(0,10,10,10);
        	  
          }
          else{
          if(name.endsWith(".")){
        	g.drawLine(0,10,10,10);
       	   g.drawString(name.substring(0, name.length()-2), 1, 9);
        	g.drawString("n", 1, 20);
      	 }
          else{
          	 g.drawLine(0,10,10,10);
             g.drawString(name, 1, 9);
             }
          }
          if(selected){
             g.setColor(Color.blue);
             g.drawRect(0, 0, getBounds().width-1, getBounds().height-1);
        }
     }
    }
    
    public CircuitComponent copyComponent(){
        copy= new InputComponent(name,component.getCopy(),panel);
        return copy;
    }
    
    public void createComponent(){
        port=new Input(name);
    }
    
    public void beforeRemove() {
        if(isLinked){
            ((OutputComponent)link.getSource()).unsetLink();
            panel.remove(link);
        }
    }
    
    public void moveLink(){
        (newXinput,newYinput,getSize().width , getSize().height);
        Insets insets = panel.getInsets();
        int newX=getBounds().x + insets.left;
        int newY=getBounds().y + insets.top + 10;
        if(getLink().getCornerInput() == 1)
            getLink().setCorner1(new Point(newX,newY));
        else
            getLink().setCorner2(new Point(newX,newY));
        getLink().updateSize();
    }
    
}
La classe fa parte di un progetto in cui c'è la gestione dei circuiti logici.
Il problema si verifica quando cerco di fare il collegamento tra 2 porte, e questo collegamento lo annullo, poi non posso + ripetere il collegamento (cosa ke voglio evitare), in quanto mi restituisce l'errore: "Non e' possibile un altro link".

X correggere il problema credo che dovrei resettare la variabile di errore in modo che si possa poi disegnare ancora un link con la grafica e andare avanti con il circuito.

Qualcuno sa aiutarmi nel correggere il problema? In quanto non riesco
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale

Ultima modifica di Fabietto206 : 01-11-2010 alle 15:36.
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 01-11-2010, 15:26   #2
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Forse basta eliminare le seguenti righe di codice?

Codice:
if(isLinked==true){
            JOptionPane.showMessageDialog(null, "Non e' possibile un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
          }
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 08:39   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ho letto rapidamente il codice.

Quote:
Il problema si verifica quando cerco di fare il collegamento tra 2 porte, e questo collegamento lo annullo, poi non posso + ripetere il collegamento (cosa ke voglio evitare), in quanto mi restituisce l'errore: "Non e' possibile un altro link".
Puoi specificare meglio cosa intendi di preciso con le parole evidenziate in grasseto?
Dal codice postato io deduco che:
1) InputComponent può avere al più un LinkComponent.
2) InputComponent viene collegato a un LinkComponent la prima volta che l'utente ci clicca sopra (con qualsiasi tasto del mouse).
3) Una volta collegato a un LinkComponent, un InputComponent non può più essere collegato a un LinkComponent finchè non viene "scollegato".
4) Per "scollegare" un InputComponent dal suo LinkComponent attuale bisogna invocare su InputComponent il metodo 'unsetLink'.

Forse il punto 4) è quello che stavi cercando?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 15:53   #4
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Allora con la parte in grassetto intendo dire che ho 2 porte e provo a fare il collegamento tra le 2, xò prima di farlo (click tasto sx mouse) lo annullo (click tasto dx mouse).

Ho provato a fare così:
Codice:
if(isLinked==true && isJunctioned==false){
                    JOptionPane.showMessageDialog(null, "Non puoi creare un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
                    unsetLink();
                }
Ma nn va, cioè ottengo lo stesso risultato di prima....

Se vuoi via pm ti mando il programmino così vedi cosa intendo di preciso cn annullare il collegamento
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 16:28   #5
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Fabietto206 Guarda i messaggi
Allora con la parte in grassetto intendo dire che ho 2 porte e provo a fare il collegamento tra le 2, xò prima di farlo (click tasto sx mouse) lo annullo (click tasto dx mouse).
[...]
Da quel che ho capito io, mi pare sia più una questione di gestione corretta dei mouse event per il mouse listener associato al tuo componente.

Il tuo componente è la classe InputComponent (che estende AbstractComponent la quale, suppongo, può vantare la classe java.awt.Component da qualche parte nella sua catena di eredità: questo lo si intuisce dalla presenza di una chiamata al metodo 'addMouseListener' che InputComponent invoca su se stesso nel costruttore).

Il mouse listener associato a InputComponet è una classe anonima istanziata nel costruttore di InputComponent, e sembra gestire solo l'evento "mouseClicked" senza, attualmente, fare distinzione tra i tasti del mouse (cioè uno può produrre un 'click' valido con un qualsiasi pulsante del mouse, indifferentemente).

Un evento di "mouseClick" per un dato componente, se non ricordo male, viene prodotto ogni volta che il mouse viene premuto E rilasciato sull'area di clipping del componente.

Non ricordo cosa accada (e ora non ho il tempo di buttare giù del codice di prova) se premi un pulsante (il sinistro) e invece di rilasciarlo premi e rilasci un'altro pulsante: così, a naso, direi che vengono prodotti due eventi distinti di click, uno per ogni pulsante premuto+rilasciato (il che spiegherebbe perchè non ti "annulla" l'azione come ti aspettavi, ma ti crea due eventi: se il link non c'è già, il primo crea il link e il secondo cade nel flusso di esecuzione che visualizza il tuo JOptionPane poichè il link esiste già).

Se la mia ipotesi è corretta te la cavi prevedendo e gestendo esplicitamente la "gesture" di annullamento (devi realizzare un mouse listener più raffinato, consiglio lettura del tutorial se non sei pratico).
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 02-11-2010 alle 16:30.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 02-11-2010, 18:26   #6
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Cavoli ne sai parecchio di java, complimenti.
Ecco la classe che potrebbe eseguire quello che dici tu
Codice:
public class Istant extends JComponent {
	private static final long serialVersionUID = 1L;
	private static final int H=36;
	private static final int W=18;
	private int row;
	private int col;
	private boolean value;
	private boolean selected;
	private boolean clickable;
	private boolean delayed;
	private ChartPanel panel;
	private IstantHandler handler;
	private Port port;
	private int d1;
	private int d2;
	private int delay;
	
	public Istant(int r,int c,ChartPanel p,IstantHandler h,Port po,boolean cl){
		port = po;
		row = r;
	    col = c;
		value=false;
		selected=false;
		delayed=false;
		clickable=cl;
		panel=p;
		delay=0;
		d1=0;
		d2=0;
		handler=h;
		getBounds().setSize(W, H);
        setPreferredSize(new Dimension(W,H));
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseEntered(MouseEvent evt) {
            	if(clickable){
            		selected=true;
            		repaint();
            	}
            }
            public void mouseExited(MouseEvent evt) {
            	if(clickable){
            		selected=false;
            		repaint();
            	}
            }
            public void mouseClicked(MouseEvent evt) {
            	if(clickable){
            		if(evt.getButton() == MouseEvent.BUTTON1){
            			switchMe(true);
            			handler.switchOther(getMe());
            		}
            		if(evt.getButton() == MouseEvent.BUTTON3){
            			switchMe(false);
            			handler.switchOther(getMe());
            		}
            	}
            }
        });
	}
		
/*Ho eliminato alcuni metodi della classe ke nn mi sembravano utili al contesto*/
}
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2010, 14:22   #7
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Fabietto206 Guarda i messaggi
Ecco la classe che potrebbe eseguire quello che dici tu
[cut]
La classe che hia postat, Istant, è una classe che estende JComponent (dunque rappresenta un componente grafico) e risponde a degli eventi generati dal mouse tramite un mouse listener anonimo istanziato nel costruttore.

Se questa classe Istant è in qualche modo collegata alla classe al tuo primo post (InputComponent) non è dato saperlo, e mi chiedo perchè l'hai postata, cioè a quale scopo: volevi farmi/farci capire qualcosa in particolare?

Tornando al mio precedente messaggio, non so se hai compreso cosa ti suggerivo: io ti suggerivo di prendere la tua classe InputComponent e implementare un mouse listener che gestisca la funzionalità di "annullamento link" che hai descritto.

Onestamente non ho capito cosa ti proponevi di realizzare, al tuo primo post, quando scrivesti:
Quote:
...
Il problema si verifica quando cerco di fare il collegamento tra 2 porte, e questo collegamento lo annullo, poi non posso + ripetere il collegamento (cosa ke voglio evitare), in quanto mi restituisce l'errore: "Non e' possibile un altro link".
...
Ho in mente un tot di possibilità, te ne scrivo un paio:

1) vuoi permettere ad un utente che sta creando un link su un oggetto InputComponent tramite click del mouse con un bottone, di cancellare questa operazione di creazione del link mediante click con un altro bottone prima che il primo click sia completato?
Es.:
- A preme pulsante snx su un InputComponet IC
- mentre tiene premuto il pulsante snx su IC, A cambia idea e vuole annullare l'azione
- quindi mentre continua a tenere premuto il pulsante snx su IC, A fa click (preme e rilascia) il pulsante dx su IC
- l'azione di creazione del link per IC viene annullata.

2) vuoi permettere ad un utente che ha già creato un link su un oggetto InputComponent di rimuovere il vecchio link (lo stato di InputComponent torna allo stato che ha quando è senza link)?

3) vuoi permettere ad un utente che ha già creato un link su un oggetto InputComponent di rimuovere il vecchio link e sostituirlo con uno nuovo (lo stato di InputComponent resta allo stato che ha quando è con un link, solo che il link è diverso)?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2010, 16:10   #8
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Quello che voglio fare è il punto 1, solo che il tasto sx del mouse non bisogna continuare a premerlo, ma lo premo su IC, lo lascio finché mi trovo sul componente OC (Output component) e quindi lo ripremo.

Io vorrei che prima di fare il click sx su OC, premendo il dx si annulli l'operazione: questa funzione è già implementata; xò il problema è che se annullo ciò, poi da IC non posso più creare link perchè mi da errore.


Inoltre mi piacerebbe anke implementare quello che hai scritto al punto 2, in quanto non mi permette di fare ciò nel codice come è scritto.
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2010, 16:14   #9
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Dici che devo modificare questo metodo presente sia in InputComponent che in OutputComponent.

Codice:
public void unsetLink(){
        isLinked=false;
    }
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2010, 18:03   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Fabietto206 Guarda i messaggi
Quello che voglio fare è il punto 1, solo che il tasto sx del mouse non bisogna continuare a premerlo, ma lo premo su IC, lo lascio finché mi trovo sul componente OC (Output component) e quindi lo ripremo.

Io vorrei che prima di fare il click sx su OC, premendo il dx si annulli l'operazione: questa funzione è già implementata; xò il problema è che se annullo ciò, poi da IC non posso più creare link perchè mi da errore.
Fammi capire: quindi l'azione ha due componenti come "attori" ed è "mediata" da una terza entità?
Ah, forse è quel ChartPanel che vedo entrare in gioco nel mouse listener anonimo collegato a InputComponent?

Se sì, per chiarezza potresti postare anche il codice di OutputComponent?
Immagino basti il costruttore, o comunque la porzione che include la creazione e collegamento del suo mouse listener e le dichiarazioni/istanziazioni/implementazioni di tutte le variabili e di tutti i metodi nominati dal codice di detto mouse listener.

@EDIT:
Ah già, posta pure ChartPanel, sennò non ne veniamo fuori.
Credo di cominciare a capire: l'azione del collegare un InputC. con un OutputC. coinvolge anche un ChartPanel comune ad entrambi a cui viene demandata la gestione dello stato relativo all'azione stessa (e non so che altro); mentre i due componenti memorizzano solo il fatto di essere linkati o meno.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 03-11-2010 alle 18:09.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2010, 20:29   #11
Fabietto206
Senior Member
 
L'Avatar di Fabietto206
 
Iscritto dal: Jul 2007
Città: Cassano M.go (Va)
Messaggi: 631
Ti posto tutte e 3 le classi, così ci sono tutte in un unico post
Codice:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.MouseEvent;

import javax.swing.JOptionPane;

import core.Input;

public class InputComponent extends AbstractComponent implements CircuitComponent{

    private static final long serialVersionUID = 1L;
    private LinkComponent link;
    private boolean isLinked;
    
    public InputComponent(String n, CircuitComponent c,CircuitPanel p){
        initPortComponent(n,c,p);
        int w,h;
        w=20;
        h=20;
        getBounds().setSize(w, h);
        setPreferredSize(new Dimension(w,h));
        port=new Input(name);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if(isLinked==true){
                    JOptionPane.showMessageDialog(null, "Non e' possibile un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
                }
                else {
                    if(panel.getFunction()==CircuitPanel.PAINT_LINK_FROM){
                        panel.setLink(new LinkComponent(panel));
                        panel.getLink().setDest(getMe());
                        link=panel.getLink();
                        isLinked=true;
                        panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),true);
                        panel.doOperations(new PaintLinkOperations(panel,panel.getFacade().getColor()));
                        panel.setFunction(CircuitPanel.PAINT_LINE);
                    }
                    else if(panel.getFunction()==CircuitPanel.PAINT_LINE){
                        panel.getLink().setDest(getMe());
                        link=panel.getLink();
                        isLinked=true;
                        panel.getLink().setCornerInput(new Point(getBounds().x,getBounds().y+10),false);
                        panel.getLink().updateSize();
                        CircuitComponent source = panel.getLink().getSource();
                        CircuitComponent dest = panel.getLink().getDest();
                        panel.repaint();
                        panel.setFunction(CircuitPanel.SELECTION);
                    }
                    else{}
                }
            }
        });
    }
    
    public LinkComponent getLink(){
        return link;
    }
    
    public void setLink(LinkComponent l){
        isLinked=true;
        link=l;
    }
    
    public void unsetLink(){
        isLinked=false;
    }
    
    public boolean isLinked(){
        return isLinked;
    }
    
    public void paintComponent(Graphics g){
    	if(name.startsWith("."));
    	else{
          g.setColor(color);
          if(name.contains("=0*")||name.contains("=1*")){
        	  g.drawLine(0,10,10,10);
        	  
          }
          else{
          if(name.endsWith(".")){
        	g.drawLine(0,10,10,10);
       	   g.drawString(name.substring(0, name.length()-2), 1, 9);
        	g.drawString("n", 1, 20);
      	 }
          else{
          	 g.drawLine(0,10,10,10);
             g.drawString(name, 1, 9);
             }
          }
          if(selected){
             g.setColor(Color.blue);
             g.drawRect(0, 0, getBounds().width-1, getBounds().height-1);
        }
     }
    }
    
    public CircuitComponent copyComponent(){
        copy= new InputComponent(name,component.getCopy(),panel);
        return copy;
    }
    
    public void createComponent(){
        port=new Input(name);
    }
    
    public void beforeRemove() {
        if(isLinked){
            ((OutputComponent)link.getSource()).unsetLink();
            panel.remove(link);
        }
    }
    
    public void moveLink(){
        Insets insets = panel.getInsets();
        int newX=getBounds().x + insets.left;
        int newY=getBounds().y + insets.top + 10;
        if(getLink().getCornerInput() == 1)
            getLink().setCorner1(new Point(newX,newY));
        else
            getLink().setCorner2(new Point(newX,newY));
        getLink().updateSize();
    }
    
}
Codice:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JOptionPane;

import core.Output;

public class OutputComponent extends AbstractComponent implements CircuitComponent {
    
    private static final long serialVersionUID = 1L;
    protected List<LinkComponent> links;
    private boolean isLinked;
    private boolean isJunctioned;
    
    public OutputComponent(String n, CircuitComponent c, CircuitPanel p){
        initPortComponent(n,c,p);
        isJunctioned=false;
        int w,h;
        w=20;
        h=20;
        getBounds().setSize(w, h);
        setPreferredSize(new Dimension(w,h));
        isLinked=false;
        port=new Output(name);
        links=new LinkedList<LinkComponent>();
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                if(panel.getFunction()==CircuitPanel.JUN){
                    isJunctioned=true;
                    panel.repaint();
                    panel.setFunction(CircuitPanel.SELECTION);
                }
                else {
                if(isLinked==true && isJunctioned==false){
                    JOptionPane.showMessageDialog(null, "Non puoi creare un altro link", "Link Error", JOptionPane.ERROR_MESSAGE);
                }
                else {
                    if(panel.getFunction()==CircuitPanel.PAINT_LINK_FROM){
                        panel.setLink(new LinkComponent(panel));
                        panel.getLink().setSource(getMe());
                        links.add(panel.getLink());
                        if(!isJunctioned)
                            isLinked=true;
                        panel.getLink().setCornerOutput(new Point(getBounds().x+15,getBounds().y+10),true);
                        panel.doOperations(new PaintLinkOperations(panel,panel.getFacade().getColor()));
                        panel.setFunction(CircuitPanel.PAINT_LINE);
                    }
                    else if(panel.getFunction()==CircuitPanel.PAINT_LINE){
                        panel.getLink().setSource(getMe());
                        links.add(panel.getLink());
                        if(!isJunctioned)
                            isLinked=true;
                        panel.getLink().setCornerOutput(new Point(getBounds().x+15,getBounds().y+10),false);
                        panel.getLink().updateSize();
                        CircuitComponent source = panel.getLink().getSource();
                        CircuitComponent dest = panel.getLink().getDest();
                        panel.repaint();
                        panel.setFunction(CircuitPanel.SELECTION);
                    }
                    else{}
                }
            }
            }
        });
    }
    
    public void init(CircuitComponent c, CircuitPanel p){
        
    }
   
    public List<LinkComponent> getLinks(){
        return links;
    }
    
    public void setLink(LinkComponent l){
        isLinked=true;
        links.add(l);
    }
    
    public void unsetLink(){
        isLinked=false;
    }
    
    public boolean isLinked(){
        return isLinked;
    }
    
    public boolean isJunctioned(){
        return isJunctioned;
    }
    
    public void setJunctioned(boolean t){
    	isJunctioned=t;
    }
    
    public void paintComponent(Graphics g){
    	g.setColor(color);
    	if(name.startsWith("."));
    	else{
    	if(name.endsWith(".")){
    		if(name.contains("=0")||(name.contains("=1"))){
    			g.drawString(name.substring(0,1), 1, 20);
    			g.drawLine(0,10,10,10);
    		}
    		else{
           	g.drawLine(0,10,10,10);
            g.drawString(name.substring(0, name.length()-2), 1, 9);
           	g.drawString("n", 1, 20);
    		}
          	 }
    	else{
        g.drawLine(0,10,10,10);
        if(name.contains("=0"))
        	g.drawString("0", 1, 9);
        else if(name.contains("=1"))
        	g.drawString("1", 1, 9);
        else  {g.drawString(name, 1, 9);
               
               }
    	}       
        if(selected){
            g.setColor(Color.blue);
            g.drawRect(0, 0, getBounds().width-1, getBounds().height-1);
        }
    	}
    }
    
    public CircuitComponent copyComponent(){
        copy = new OutputComponent(name,component.getCopy(),panel);
        return copy;
    }
    
    public void createComponent(){
        port=new Output(name);
    }
    
    public void beforeRemove() {
        if(isLinked || isJunctioned){
            for(int i=0;i<links.size();i++){
                ((InputComponent)links.get(i).getDest()).unsetLink();
                panel.remove(links.get(i));
            }
        }
    }

    public void moveLink(){
        Insets insets = panel.getInsets();
        int newX=getBounds().x + insets.left+15;
        int newY=getBounds().y + insets.top+10;
        for(int i=0;i<links.size();i++){
            if(links.get(i).getCornerOutput() == 1)
                links.get(i).setCorner1(new Point(newX,newY));
            else
                links.get(i).setCorner2(new Point(newX,newY));
            links.get(i).updateSize();
        }
    }
    
}
Codice:
import gui.FrameMain;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Insets;
import java.awt.event.MouseEvent;
import java.util.LinkedList;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class ChartPanel extends JPanel{
	
	private static final long serialVersionUID = 1L;
	protected List <String> names;
	private IstantHandler handler;  //  @jve:decl-index=0:
	private JButton jButton1;  //  @jve:decl-index=0:visual-constraint="273,240"
	private int origX;
	private int origY;
	private JLabel jLabel1;
	private String expression;
	private FrameMain frame;
	
	public ChartPanel(FrameMain fm){
		setLayout(null);
		frame=fm;
		expression="";
		names = new LinkedList<String>();
		jButton1 = new JButton("Refresh Chart");
		jLabel1 = new JLabel("Espressione:  " + expression);
		Insets insets = getInsets();
        Dimension size = jButton1.getPreferredSize();
        jButton1.setBounds(0 + insets.left, 0 + insets.top+100,size.width, size.height);
        size = jLabel1.getPreferredSize();
        jLabel1.setBounds(0 + insets.left, 0 + insets.top,size.width, size.height);
		add(jButton1);
		add(jLabel1);
		jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(MouseEvent evt) {
                handler.generateOutputsIstants();
               }
        });
	}
	public int numNames()
	{
	return names.size();	
	}
	public void setHandler(IstantHandler h){
		handler=h;
	}
	
	public IstantHandler getHandler(){
		return handler;
	}
	
	public void addName(String n){
		if(n.equals("") || n == null)
			return;
		names.add(n);
		origX=30;
		origY=names.size()*20 + 200;
		Insets insets = getInsets();
        Dimension size = jButton1.getPreferredSize();
        jButton1.setBounds(origX + 220 + insets.left, origY + 340 + insets.top,size.width, size.height);
        size=jLabel1.getPreferredSize();
        jLabel1.setBounds(origX + insets.left+20, origY + 370 + insets.top,size.width, size.height);
	}
	
	public int getOrigX(){
		return origX;
	}
	
	public void setExpression(String e){
    	expression=e;
    }
	
	public int getOrigY(){
		return origY;
	}
	
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		origX=70;
		origY=names.size()*20 + 300;
		int x=70;
		int y=names.size()*20 + 300;
		int height=20;
		int width=610;
		
        g.setColor(Color.BLACK);
        g.drawLine(x, y+200, x, (height+400)-names.size()*20);
        g.drawLine(x, y+200, width+40,y+200);

        for(int i=1;i<=32;i++)
        	g.drawLine(x + (i*18), y+200, x + (i*18),y+205 );
        for(int i=1;i<=32;i++)
        	g.drawString(Integer.toString(i),x + (i*18)-5, y+220 );
        
        int len = names.size()*2;

        for(int i=0;i<len;i++)
        	g.drawLine(x-5, y-((i+1)*18)+198, x+5 ,y-((i+1)*18)+198);
        for(int i=0;i<len;i++)
        	if(i%2==0){
        		g.drawString("0",x-15, y - ((i+1)*18)+5+220);
        		g.drawString(names.get(i/2),x-50, y - ((i+1)*18 + 10-225));
        	}
        	else
        		g.drawString("1",x-15, y - ((i+1)*18)+225);
         	
	public void clearNames(){
		names.clear();
		removeAll();
	    jButton1 = new JButton("Refresh Chart");
		jLabel1 = new JLabel("Espressione:  " + expression);
		add(jButton1);
		add(jLabel1);
		jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
          public void mouseClicked(MouseEvent evt) {
            handler.generateOutputsIstants();
              }
        });
	}
	

}
La classe ChartPanel fa parte di un altro package rispetto a IC e OC, essa si occupa di rappresentare il piano su cui verrà disegnato il circuito.
Non è che ti serve la classe CircuitPanel??
__________________
PC: Intel Core i5 4690K @ 3,5 Ghz | VGA Gigabyte GTX 970 G1 Gaming | RAM G Skill Ares 1866 Mhz (2x4GB) | HDD WD Caviar Blue 1TB | SSD Samsung 840 Evo 250GB | MoBo AsRock Z97 Extreme 4 Router: Netgear dg834g v5 Notebook: Asus x53sv: Intel i7 2630qm | Geforce gt630 | RAM 4GB | SSD 250GB Cell: Iphone 8 64GB Black Tablet: Ipad Air 16GB + 4G Grigio siderale
Fabietto206 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
Attacco a OpenAI dal Giappone: Sora avre...
OpenAI annuncia un accordo strategico co...
Black Friday per e-bike Engwe: fino a 40...
Una PS5 grande come un tostapane: dove n...
Intel aveva pronta una scheda video di f...
Filippo Luna, CEO di Aira Italia: "...
Task Manager non si chiude e si moltipli...
Il CEO di OpenAI si lamenta della sua Te...
Shadow AI: il lato invisibile dell’innov...
Windows 7 ridotto a soli 69 MB: l'esperi...
Ancora problemi per i dischi SMR di West...
IA, zero trust, cifratura post quantum: ...
Accise diesel, la Legge di Bilancio 2026...
Chi possiede un'auto con motore PureTech...
Trump blocca le GPU NVIDIA Blackwell in ...
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: 04:03.


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