Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: Disegnare java

  1. #1

    Disegnare java

    ciao a tutti! ho piccolo problema da risolvere.sto creando una desktop application in java con netbeans 6.9.1, e dentro alla wiew ho una jlabel, dentro essa deve apparire un disegno, questo disegno è derterminato in un metodo che ho creato io in una classe che creato io. come faccio ad inserire questo disegno in una jlabel che voglio io? come risolvo?
    nell'instaziare la classe nella wiew lo fatto, so anche richiamare il metodo, solo che non mi ricordo il metodo da richiamare con jlabel che posso usare come parametro il metodo della mia classe.
    per capire meglio:
    mia classe:

    codice:
    public class disegnare{
    Graphics g = new Graphics(){
    [...]
    }
    public void Disegna(){
    g.drawLine(1,2,3,4);
    g.drawLine(5,6,7,8);
    
    }
    }
    la wiew:

    codice:
    disegnare z = new disegnare();
    jlabel.metodo1(z.disegna());
    mancano un po' di cose infatti un codice cosi non funzionerebbe oviamente era solo per farvi l'esempio di cosa intendo. con metodo1 è perchè non mi riccordo il nome predefinito del metodo da richiamare per fare una cosa simile in una jlabel.

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Puoi semplicemente utilizzare il metodo setIcon() di JLabel. Ovviamente la tua classe deve estendere JLabel.

    Altrimenti puoi creare una sottoclasse di JPane e offrire una tua versione del metodo paintComponent(Graphics).

  3. #3

    Puoi semplicemente utilizzare il metodo setIcon() di JLabel. Ovviamente la tua classe deve estendere JLabel.
    fino ad estendere la mia classe ad JLabel tutto ok. ma nel usare setIcon ho una linea rossa. come mai? come risolvo?

    in pratica ho fatto cosi:

    mia classe:

    codice:
    public class disegnare extends javax.swing.JLabel;
    
    Graphics g = new Graphics(){[...]};
    
    public void Disegna()
    {
    
    g.drawLine(1,2,3,4);
    g.drawLine(5,6,7,8);
    
    }
    wiew:

    codice:
    disegnare z = new disegnare();
    jlabel.setIcon(z.Disegna());
    probabimente manca qualche getter per usare il setter solo che non so cosa manchi se fosse getter ho provato getIcon solo che continua ad essere rossa la linea.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    All'interno della classe disegna implementa il metodo setIcon. Pensavo lo chiamassi dall'interno della classe

    codice:
    public void setIcon(Icon icon) {
      super.setIcon(icon);
    }
    prova così..

  5. #5
    anche facendo cosi mi esce fuori linea rossa nella wiew io ho implemetato nella mia classe il metodo setIcon come hai detto tu, solo che nella wiew non so come andar avanti, per lo meno ho lasciato il codice come era prima dell'impletazione del metodo setIcon nella mia classe.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Cracker1992
    anche facendo cosi mi esce fuori linea rossa nella wiew io ho implemetato nella mia classe il metodo setIcon come hai detto tu, solo che nella wiew non so come andar avanti, per lo meno ho lasciato il codice come era prima dell'impletazione del metodo setIcon nella mia classe.
    Ma nella classe che estende JLabel l'hai implementato?

    Posta del codice, altrimenti non si capisce molto...

  7. #7
    ecco il codice:

    mia classe:

    codice:
    public class disegnare extends javax.swing.JLabel{
    
    Graphics g = new Graphics(){[...]}
    
    public void Disegna(){
    
    g.drawline(1,2,3,4);
    g.drawLine(5,6,7,8);
    
    }
    
    public void setIcon(Icon icon){
    super.setIcon(icon);
    
    }
    
    }
    wiew:

    codice:
    jlabel.setIcon(z.Disegna());

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Cracker1992
    ecco il codice:

    mia classe:

    codice:
    public class disegnare extends javax.swing.JLabel{
    
    Graphics g = new Graphics(){[...]}
    
    public void Disegna(){
    
    g.drawline(1,2,3,4);
    g.drawLine(5,6,7,8);
    
    }
    
    public void setIcon(Icon icon){
    super.setIcon(icon);
    
    }
    
    }
    wiew:

    codice:
    jlabel.setIcon(z.Disegna());
    In questo modo non penso ti funzionerà mai...
    Poi..Disegna() non restituisce nulla..come può funzionare?

    Se vuoi solamente disegnarci su, allora ti basta fare così
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    class MyLabel extends JLabel {
      public void paintComponent(Graphics g) {
        super.paintComponent(g);
    	g.drawString("Html.it",10,10);
      }
    }
    class TestLabel extends JFrame {
      MyLabel myLabel;
      TestLabel() {
        myLabel = new MyLabel();
    	add(myLabel);
    	
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
      
      public static void makeGUI() {
        TestLabel tl = new TestLabel();
    	tl.setSize(50,50);
    	tl.setVisible(true);
      }
      public static void main(String[] args) {
        try {
    	  SwingUtilities.invokeAndWait(new Runnable() {
    	    public void run() {
    		  makeGUI();
    		}
    	  });
    	} catch(Exception e) {}
      }
    }
    Diversa cosa è se vuoi caricare una ImageIcon e settarla sulla label..

    Puoi disegnare anche su un JPanel comunque.

    Ho evitato di soffermarmi sul tuo codice..poichè vi sono degli errori non da poco. Graphics ad esempio non può essere istanziabile in quel modo.

  9. #9
    non ci siamo allora capiti fin ora io intendo creare dei disegni qualunque in un metodo e poi farli apparire in qualche modo in una label o qualunque altro componente swing. non puo restituire nulla comuque un metodo di disegno perchè i disegni non sono ne stringhe ne numeri. comunque come faccio ad instanziare in modo giusto Graphics. per intederci guarda il codice e poi dimmi come andare avanti.

    codice:
    public class disegnare{
    Graphic g = new Graphics(){[...]};
    public class Disegna(){
    g.drawLine(1,2,3,4);
    g.drawLine(5,6,7,8);
    }
    }
    come posso usare questo metodo in modo tale che escano fuori le due linee dentro un componente di swing.
    dentro [...] ci sono implemetati tutti i metodi astratti.

    comunque il componente che visualizza il disegno di Disegna() deve essere contenuto nel mainPanel della FrameWiew della mia desktopapplication.

    infine gli errori sono da tralasciare xk ho scritto dei codici generali per fare un esempio.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Hai provato l'esempio che ti ho mostrato sopra?
    Puoi adattarlo alle tue esigenze.

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.