Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    JLabel

    Ho fatto il seguente codice in cui dovevo inserire un numero in una JTextField, poi tramite la pressione di un bottone mi doveva apparire il numero in una JLabel con ogni cifra in ogni riga..
    Il mo problema stà nel fatto che non riesco a far apparire le cifre riga per riga...
    Cosa ha sbagliato?

    codice:
    public class FinestraScomposizioneIntero implements ActionListener{
            JTextField testo1 = null;
            JLabel etic1 = null;
    
           public FinestraScomposizioneIntero()
           {
                JFrame f = new JFrame("Scomposizione Intero");
                JPanel pannello = new JPanel();
                testo1 = new JTextField(10);
                pannello.add(testo1);
                JButton bottone = new JButton("Scomponi");
                pannello.add(bottone);
                bottone.addActionListener(this);
                etic1 = new JLabel("Risultato");
                pannello.add(etic1);
    
                f.add(pannello);
                f.setBounds(200, 100, 300, 200);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setResizable(false);
                f.setVisible(true);
           }
       
        public static void main(String[] args) {
           FinestraScomposizioneIntero finestra = new FinestraScomposizioneIntero();
        }
    
        public void actionPerformed(ActionEvent e) {
            String comando = e.getActionCommand();
            System.out.println("comando = " +comando);
            String valore1 = testo1.getText();
            for(int i=0; i<valore1.length();i++)
            {
                etic1.setText(valore1.charAt(i)+"");
            }
        }
    }

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    nel fatto che non conosci bene le label.
    Allora per scendere di riga dovresti usare i formattatori html, ma se devi aggiungere dei valori in append la label non è il componente indicato (almeno per me): o usi una label per ogni valore, oppure usi un componente come list o proprio textpane (su cui setti valori di layout che ti garantiscono visivamente un comportamento simile alla label

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Il problema valia è che il testo è il seguente :
    Scrivete un programma che legge un numero intero su di una JTextField e dopo
    aver premuto su di un JButton lo scompone in una serie di cifre singole, in ordine inverso.
    Per esempio, il numero 16384 verrà visualizzato su una JLabel come :
    4
    8
    3
    6
    1

    Quindi lunico modo sarebbe quello di inserire tante JLabel, ma sarebbe uno spreco perchè se inserisco un numero da 5 cifre e creo 10 JLabel, 5 rimarrebbero inutilizzate...

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    oppure come ti dicevo utilizzi l'html, ricordandoti di lasciare lo spazio per la "crescita" in altezza della label.
    La soluzione con 10 label a me sembra la migliore (più ordinata direi)

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Ancora l'html non l'ho visto con il mio prof.
    quindi proverò a creare un pò di label, però mi sembra strano che nel testo ci sia scritto "inserire in UNA JLabel"

    vabbè

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ma avete parlato di list??? (come componente swing) perché a volte si parla di label tenendo conto di qualcosa di visivo per vedere il valore

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    neanche di quello...
    abbiamo visto solo le componenti base base della grafica...

    però ora non posso più usare il ciclo for per inserire i valori...

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    sni e ti spiego.

    codice:
    JLabel [] labels = new JLabel[10];
    hai un array di 10 label.

    poi e hai inizializzato i valori delle label

    codice:
    for (int index = 0; index < labels.length; index++){
       labels[index] = new JLabel();
    }
    per aggiungerle al tuo pannello (supponi sia pannelloLabel)

    codice:
    for (JLabel label : labels){
       pannelloLabel.add(label);
    }
    infine quando devi valorizzarli fai

    codice:
    for (int index = 0; index < labelDaValorizzare; index++){
       labels[index].setText(testoDaVisualizzare);
    }
    e ricorda le altre di porle a ""

    codice:
    for (int index = labelDaValorizzare; index < labels.length; index++){
       labels[index].setText("");
    }
    dovrebbe funzionare

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Quello che mi hai scritto è chiarissimo, ho provato a mettere il tuo aiuto all'interno del mio codice, ma ottengo ancora qualche problema più che altro in merito all'ArrayIndexOutOfBpundException

    Il codice l'ho riformulato nella seguente maniera, considerando che le cifre devono apparire dall'ultima alla prima

    codice:
    public class FinestraScomposizioneIntero implements ActionListener{
            JTextField testo1 = null;
            JLabel [] etic = null;
    
           public FinestraScomposizioneIntero()
           {
                JFrame f = new JFrame("Scomposizione Intero");
                JPanel pannello = new JPanel();
                testo1 = new JTextField(10);
                pannello.add(testo1);
                JButton bottone = new JButton("Scomponi");
                pannello.add(bottone);
                bottone.addActionListener(this);
                etic = new JLabel[10];
                for(int index = etic.length-1; index >= 0; index--)
                {
                    etic[index] = new JLabel();
                }
                for (JLabel label : etic){
                    pannello.add(label);
                }
    
    
                f.add(pannello);
                f.setBounds(200, 100, 300, 200);
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setResizable(false);
                f.setVisible(true);
           }
       
        public static void main(String[] args) {
           FinestraScomposizioneIntero finestra = new FinestraScomposizioneIntero();
        }
    
        public void actionPerformed(ActionEvent e) {
            String comando = e.getActionCommand();
            System.out.println("comando = " +comando);
            String valore1 = testo1.getText();
            for (int index = etic.length-1; index >= 0; index--)
            {
                etic[index].setText(valore1.charAt(index)+"");
            }
        }
    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    arrayIndexOfBoundException indica che stai tentando di accedere ad una posizione dell'array che non hai.
    Allora falle bene le cose e non sbagli

    codice:
    for(int index = etic.length-1; index >= 0; index--)
                {
                    etic[index] = new JLabel();
                }
    serve solo ad inizializzare il vettore, quindi fallo come si deve.
    o lo fai
    codice:
    index = 0; index < etic.length; index++
    oppure
    codice:
    index = etic.length; index >= 0; index--
    prova e dimmi

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 © 2024 vBulletin Solutions, Inc. All rights reserved.