Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    55

    interfaccia grafica per frazioni

    Salve a tutti,
    devo stampare a video delle frazioni, o meglio delle operazioni con frazioni. ho cercato in tutto il web ma non ho trovato nulla ed io non ho proprio idea di come fare!!!!



    Se qualcuno ha qualche idea , mi risponda per favore ...... PLEASE!!!!!

    GRAZIE A TUTTI

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ti serve un componente swing tipo label ma che ti mostri una frazione in formato
    codice:
     1
    ---
     2
    ?
    Che io sappia non esiste, ma credo che scriverlo sia fattibile.
    Fai una classe che estende un JLabel con un costruttore che accetta due stringhe in ingresso (numeratore e denominatore), poi prova a sovrascrivere il metodo printComponent per disegnare manualmente la frazione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    55
    Quindi dovrei creare una JLabel per ogni frazione, perchè i numeri vengono generati in maniera random e quindi non so a priori da quante cifre è composto il numero.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Quello che mi era venuto in mente era fare una classe FractionLabel che estendeva JLabel e' sovrascrivere il metodo paintComponent in modo che disegnasse all'interno della label numeratore e denominatore separati dalla linea.
    Se non ti sembra una soluzione adeguata prova a spiegare meglio il problema, magari c'e' qualcosa di piu' adatto.
    Verrebbe una label per ogni frazione, ma una frazione potrebbe essere anche del tipo:
    Immagini allegate Immagini allegate

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    55
    mi sembra un ottima idea, ma non ho molta dimestichezza con le label, se vuoi, puoi inviarmi il codice dell'esempio?Grazie mille in qualsiasi caso!!!!

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    L'idea e' questa, il codice e' lungi dall'esser perfetto pero'.
    codice:
    import java.awt.*;
    import javax.swing.*;
    
    /**
     * @author Simone
     */
    public class FractionLabel extends JLabel {
        private String numeratore;
        private String denominatore;
        public final static int OFFSET = 5;
        int width, height, numW, denW;
        
        public FractionLabel(String num, String den) {
            this.numeratore = num;
            this.denominatore = den;
            FontMetrics fm = this.getFontMetrics(this.getFont());
            numW =  fm.stringWidth(numeratore);
            denW =  fm.stringWidth(denominatore);
            if(numW<denW) {
                width = denW;
            } else {
                width = numW;
            }
            height = fm.getHeight();
            this.setPreferredSize(new Dimension(width+(OFFSET*2), (height*2)+(OFFSET*3)));
        }
        
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
            int numOff = (int)((width/2.0f)-(numW/2.0f));
            int denOff = (int)((width/2.0f)-(denW/2.0f));
            g.drawString(numeratore, OFFSET+numOff, OFFSET+height);
            g.drawLine(OFFSET+0, height+(OFFSET*2), OFFSET+width, height+(OFFSET*2));
            g.drawString(denominatore,  OFFSET+denOff, (height*2)+(OFFSET*2));
        }
        
        public String getDenominatore() {
            return this.denominatore;
        }
        
        public String getNumeratore() {
            return this.denominatore;
        }
        
        public static void main(String[] args) {
            JFrame f = new JFrame("test");
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            f.setSize(200,200);
            FractionLabel label =  new FractionLabel("2+2", "2");
            label.setOpaque(true);
            label.setBackground(Color.YELLOW);
            label.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            JPanel p = new JPanel();
            p.add(label);
            f.add(p);
            f.setVisible(true);
        }
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    55
    Grazie mille,
    funziona benissimo;ma ho provato ad aggiungere una frase prima della frazione e non me la visualizza.
    Ho provato con il metodo add(String, Component) ed anche a fare una System.out.println()
    ma non mi visualizza la frase.
    Cercherò di sbatterci un pò la testa!!!!

    Grazie Mille !!!!

  8. #8
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    Originariamente inviato da croberta
    Grazie mille,
    funziona benissimo;ma ho provato ad aggiungere una frase prima della frazione e non me la visualizza.
    Ho provato con il metodo add(String, Component) ed anche a fare una System.out.println()
    ma non mi visualizza la frase.
    Cercherò di sbatterci un pò la testa!!!!

    Grazie Mille !!!!
    con System.out.println viene visualizzata nella console...

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    55
    lo so, ma non ho idea di come fare a visualizzare la stringa prima del label.
    ho provato a creare un'altra label contenente la stringa ma non la visualizza!!!!

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Credo che sia un problema di Layout, se non imposti nessun layout, l'ultimo componente aggiunto rimpiazza il primo. Prova a impostare un FlowLayout sul pannello nel quale aggiungi i componenti. Se non ti va ancora posta un po' di codice.

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.