Interfaccia grafica

di il
50 risposte

50 Risposte - Pagina 3

  • Re: Interfaccia grafica

    Devo impostare un dimensione del componente?
    Ma add() aggiunge un componente?? non capisco restituisce un componente.
    O meglio mi sembra di capirre che add quindi estrae un riferimento del componente.
    un pò come getContantePane()??
  • Re: Interfaccia grafica

    No:

    Component c2 = contenitore.add(c1);

    Il add aggiunge c1 dentro contenitore E come ultima cosa restituisce il componente aggiunto (c1).
    Quindi c2 == c1
  • Re: Interfaccia grafica

    Scusa l'ignoranza, ma cosa intendi con restituisce??
    Restituire un componente, restituire l'indirizzo di memoria??
    se c2==c1 allora hanno lo stesso indirizzo di memoria
    Quindi nel mio
    
     add(panCen.add(panOUTPUT.add(new Disegna())));
    
    non ho fatto altro che unificare il tutto, in un unico indirizzo di memoria??
  • Re: Interfaccia grafica

    Alexxandro ha scritto:


    Scusa l'ignoranza, ma cosa intendi con restituisce??
    Restituire un componente, restituire l'indirizzo di memoria??
    Se io ti dicessi per es. che un metodo "setter" che setta il nome (es. in una classe Persona), RESTITUISCE il nome appena settato?
    public String setNome(String nome) {
        this.nome = nome;
        return nome;
    }
    Per i "setter" è un po' inusuale ma il concetto È questo.
  • Re: Interfaccia grafica

    Ci sono riuscito
    ho messo il setSize nel mio Component, nel metodo paintComponent
    
    public class Disegna extends JComponentl{
         public void paintComponent(Graphics g){
    		super.paintComponent(g);
    		Graphics2D g2d = (Graphics2D)g;
    		g2d.draw(cerchio1);
    		setSize(new Dimension(251,250));
    	}
    }
    
    Ci sono ?
  • Re: Interfaccia grafica

    Alexxandro ha scritto:


    Ci sono ?
    Proprio no. Primo: mai mettere impostazioni di location/size nel contesto del paint/paintComponent. Rischi "loop", strani effetti o comunque inefficienze.
    Secondo: setSize imposta la dimensione fisica del componente, quella che si vede a video. Ma se c'è un layout manager, esso se ne infischia del setSize ... è il layout manager stesso che imposta locazione/dimensione fisica! Se (e ripeto SE) il layout manager rispetta il preferred size, allora: setPreferredSize(Dimension)
  • Re: Interfaccia grafica

    Ciao..
    come posso far visualizzare figura primitiva con sopra un carattere char.
    Ad esempio ho un cerchio
    g2.fill(cerchio)
    e un carattere
    g2.drawString("A",x,y);
    sovrapposti.

    Il cerchio però non mi fa visualizzare il carattere, praticametne lo copre.
    Come posso mettere in primo piano il carattere e poi in secondo piano il cerchio??
    Stando al tutorial di java mi sembra di capire che è il setComposite().
    Ma non ho capito bene come funziona
  • Re: Interfaccia grafica

    No, il setComposite è per altri scopi più "avanzati" e in questo contesto non credo ti serve.
    Semplicemente conta l'ordine in cui usi le primitive di disegno. Ciò che disegni prima sta più "sotto" e ciò che disegni dopo sta più sopra.
  • Re: Interfaccia grafica

    Già--- non visualizzavo la stringa xjè aveva lo stesso colore dell'oggetto sotto.
    Ma se di una stringa volessi visualizzare solo i contorni??
    Con setStroke non va
    mi sembra di capire che c'entra il paintBorder()
  • Re: Interfaccia grafica

    Alexxandro ha scritto:


    già--- non visualizzavo la stringa xjè aveva lo stesso colore dell'oggetto sotto.
    Ma se di una stringa volessi visualizzare solo i contorni??
    Con setStroke non va
    mi sembra di capire che c'entra il paintBorder()
    No, paintBorder() NON c'entra proprio niente. In Swing paintBorder è una delle 3 fasi di painting (insieme a paintComponent e paintChildren) "fattorizzate" suddividendo la richiesta iniziale fatta al paint(Graphics) originale. E non c'entra niente con il testo disegnato.

    Per poter disegnare solo il contorno del testo l'approccio non è facile (è un po' "avanzato"). Si deve arrivare a fare il draw di uno Shape dove questo Shape è ottenuto dal "outline" del layout del testo. La procedura è spiegata nel tutorial ufficiale:
  • Re: Interfaccia grafica

    Come posso indicare alla mia drawString();
    che il carattere il font è questo qui
    
    	Font carattere = new Font("C:\\Debug\\JAVA\\Prove\\font\\Hanged Letters.ttf", Font.BOLD, 500);
    
    cosi non va..
  • Re: Interfaccia grafica

    Alexxandro ha scritto:


    cosi non va..
    Ovviamente NON va. Al costruttore di Font si passa il nome come indicato nella documentazione:

    The font name can be a font face name or a font family name.

    Ma NON un pathname sul file-system!

    Per questo, Font ha 2 metodi statici chiamati createFont.

    P.S. Il caricamento di un font esterno NON va fatto nel contesto di paint/paintComponent .
  • Re: Interfaccia grafica

    Ho scritto questo
    
    public class Disegno extends JComponent{
    	Ellipse2D cerchio = new Ellipse2D.Double(250, 87.5, 500, 500);
    	BasicStroke contorno = new BasicStroke(45);
    	Font font = null; //QUI CREDO CHE NON VENGA ISTANZIATO L'OGGETTO FONT
    	public void stile() throws FontFormatException, IOException{
    		 font = Font.createFont(Font.TRUETYPE_FONT, new File("C:\\Debug\\JAVA\\Prove\\font\\Hanged Letters.ttf"));
    	}
    	public void paint(Graphics g) {
    		Graphics2D g2 = (Graphics2D) g;
    		RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    		g2.setRenderingHints(rh);
    		g2.setColor(Color.black);
    		g2.setStroke(contorno);
    		
    		g2.draw(cerchio);
    		g2.setColor(Color.ORANGE);
    		g2.fill(cerchio);
    		
    		g2.setFont(font);// QUI CARICO IL NUOVO FONT, MA IN REALTA' RESTA IL FONT DI DEAFAULT
    		g2.setColor(Color.BLACK);
    		g2.drawString("1", 350, 530);
    	}
    }
    Come carico il nuovo font?
  • Re: Interfaccia grafica

    Chi invoca stile() ? Come faccio io a saperlo?
  • Re: Interfaccia grafica

    Ok credo di aver capito cosa intendi con fuori dal contento paint/paint
    Hai ragione. ahaha

    in setFont() non posso invocarlo, però se faccio ritornare un Font...
Devi accedere o registrarti per scrivere nel forum
50 risposte