Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it L'avatar di Wave
    Registrato dal
    May 2003
    Messaggi
    644

    [JAVA]Swing e chiarimenti

    Ciao ragazzi...ho da poco iniziato a programmare in java interfacce grafiche...mi ero sempre fermato ad applicazioni a linea di comando...sto provando a fare una calcolatrice...una robbetta semplice....ma una cosa mi sfugge....con che componente di Swing posso rappresentare lo spazio dove appare il risultato (in pratica quello che nella realtà è il display)...avevo pensato ad un etichetta che veniva modificata ad ogni pressione del tasto ma non sono sicuro che sia la cosa giusta...Voi che dite???

    gi che ci sono...Esiste oltre alla documentazine ufficiale qualche sito dove poter studiare le caratteristiche principali dei principali componenti di swing???magari con qualche figura esplicativa????so che dovrebbero esistere dei libri sull'argomento...ne consigliate qualcuno???
    LINUX
    Powered by Ubuntu
    Powered by MacOS X


    ...vivi la tua vita come se ogni giorno fosse l'ultimo, poichè un giorno lo sarà...

  2. #2
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Puoi usare una JLabel o forse meglio una JTextField in cui hai settato che l'utente non può digitare.
    Per tutta la documentazione e tutorial che vuoi il mio consiglio è di fare riferimento direttamente al sito Sun.
    Ciao
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  3. #3
    Utente di HTML.it L'avatar di Wave
    Registrato dal
    May 2003
    Messaggi
    644
    grazie per le info....cmq sia ci avevo preso...penso che userò la label...probabilmente ci risentiremo per altri chiarimenti...

    me ne è venuto uno adesso...

    per realizzare la GUI ho utilizzato un JFrame: nel JFrame ho inserito un JPanel (che ho chiamato Corpo). Nel corpo dove ho impostato BorderLoyout() ho inserito una Jlabel per i risultati dei calcoli nella parte NORTH e un JPanel (che ho chiamato Tastiera) dove ho impostato GridLayout(int , int) per inserire i tasti della calcolatrice in modo ordinato.

    volevo sapere se era un metodo giusto o un po macchinoso...il fatto è che non riuscivo a estendere per tutta la lunghezza della finestra il JLabel se utilizzavo un solo JPanel impostato con GridLayout()..

    non so se mi sono spiegato...
    LINUX
    Powered by Ubuntu
    Powered by MacOS X


    ...vivi la tua vita come se ogni giorno fosse l'ultimo, poichè un giorno lo sarà...

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Il procedimento è corretto... potevi evitare di inserire i pannello più grande, visto che già è previsto dal JFrame stesso.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di Wave
    Registrato dal
    May 2003
    Messaggi
    644
    ah....grazie..la prossima volta non sbaglierò.....grazie...
    LINUX
    Powered by Ubuntu
    Powered by MacOS X


    ...vivi la tua vita come se ogni giorno fosse l'ultimo, poichè un giorno lo sarà...

  6. #6
    Utente di HTML.it L'avatar di Wave
    Registrato dal
    May 2003
    Messaggi
    644
    scrivo quì senza che apro un nuovo thread....

    ho problemi con il comando toString(int i) di Integer....


    JFrame.java [215:1] unreachable statement
    String risultatotesto = Integer.toString(risultato);
    ^
    1 error


    questo è l'errore che mi viene fuori in fase di compilazione...

    risultato è un int ...non ero sicuro se la chiamata del metodo era giusta ma controllando la doc java sembrerebbe di si....non capisco il problema....

    e poi un altro problemino...ho settato

    schermo.setHorizontalTextPosition(RIGHT);

    alla jLabel schermo ma il testo viene sempre visualizzato a sinistra....why???
    LINUX
    Powered by Ubuntu
    Powered by MacOS X


    ...vivi la tua vita come se ogni giorno fosse l'ultimo, poichè un giorno lo sarà...

  7. #7
    per quanto riguarda il "unreachable statement ": il problema non è la riga di codice (che non so se è corretta), ma il fatto che si trova (probabilmente) dopo un'istruzione return... il compilatore ha dedotto che non viene eseguita in nessun caso.
    SO: Debian Sarge kernel 2.6.11
    Lang: Java, C++, C

  8. #8
    Utente di HTML.it L'avatar di Wave
    Registrato dal
    May 2003
    Messaggi
    644
    ah è vero che imbecille....infatti l'istruzione è dopo un break....che idiota....
    LINUX
    Powered by Ubuntu
    Powered by MacOS X


    ...vivi la tua vita come se ogni giorno fosse l'ultimo, poichè un giorno lo sarà...

  9. #9
    Utente di HTML.it L'avatar di Wave
    Registrato dal
    May 2003
    Messaggi
    644
    public class prova extends javax.swing.JFrame {


    public prova() {
    initComponents();
    }

    private void initComponents() {
    Corpo = new javax.swing.JPanel();
    Tastiera = new javax.swing.JPanel();
    Uguale = new javax.swing.JButton();
    Per = new javax.swing.JButton();
    Meno = new javax.swing.JButton();
    Diviso = new javax.swing.JButton();
    Piu = new javax.swing.JButton();
    Numero1 = new javax.swing.JButton();
    Numero2 = new javax.swing.JButton();
    schermo = new javax.swing.JLabel();

    setTitle("Calcolatrice");
    setBackground(new java.awt.Color(153, 153, 255));


    addWindowListener(new java.awt.event.WindowAdapter() {
    public void windowClosing(java.awt.event.WindowEvent evt) {
    exitForm(evt);
    }
    });


    Corpo.setLayout(new java.awt.BorderLayout());


    Tastiera.setLayout(new java.awt.GridLayout(3, 3));

    Tastiera.add(Numero2);
    Tastiera.add(Numero1);
    Tastiera.add(Uguale);
    Tastiera.add(Per);
    Tastiera.add(Piu);
    Tastiera.add(Diviso);
    Tastiera.add(Meno);


    Numero2.setText("2");
    Numero2.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    Numero2MouseClicked(evt);
    }
    });


    Numero1.setText("1");
    Numero1.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    Numero2MouseClicked(evt);
    }
    });


    Meno.setText("-");
    Meno.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    MenoMouseClicked(evt);
    }
    });


    Diviso.setText("/");
    Diviso.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    DivisoMouseClicked(evt);
    }
    });


    Piu.setText("+");
    Piu.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    PiuMouseClicked(evt);
    }
    });


    Per.setText("*");
    Per.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    PerMouseClicked(evt);
    }
    });


    Uguale.setText("=");
    Uguale.addMouseListener(new java.awt.event.MouseAdapter() {
    public void mouseClicked(java.awt.event.MouseEvent evt) {
    UgualeMouseClicked(evt);
    }
    });


    Corpo.add(Tastiera, java.awt.BorderLayout.CENTER);

    schermo.setBackground(new java.awt.Color(255, 255, 255));
    schermo.setText(" ");
    schermo.setBorder(new javax.swing.border.MatteBorder(null));
    schermo.setHorizontalTextPosition(javax.swing.Swin gConstants.RIGHT);
    Corpo.add(schermo, java.awt.BorderLayout.NORTH);

    getContentPane().add(Corpo, java.awt.BorderLayout.CENTER);

    pack();
    }

    private void UgualeMouseClicked(java.awt.event.MouseEvent evt) {
    switch(operazione){
    case 1: schermo.setText(Integer.toString(membro1 + membro2)); break;
    case 2: schermo.setText(Integer.toString(membro1 - membro2)); break;
    case 3: schermo.setText(Integer.toString(membro1 * membro2)); break;
    case 4: schermo.setText(Integer.toString(membro1 / membro2)); break;
    }
    operazione = 0;
    input1 = null;
    input2 = null;
    membro1 = 0;
    membro2 = 0;
    }

    private void DivisoMouseClicked(java.awt.event.MouseEvent evt) {
    operazione = 4;
    }

    private void PerMouseClicked(java.awt.event.MouseEvent evt) {
    operazione = 3;
    }

    private void MenoMouseClicked(java.awt.event.MouseEvent evt) {
    operazione = 2;
    }

    private void PiuMouseClicked(java.awt.event.MouseEvent evt) {
    operazione = 1;
    }

    private void Numero2MouseClicked(java.awt.event.MouseEvent evt) {
    if (operazione == 0) {
    input1 = input1 + "2";
    membro1 = Integer.parseInt(input1);
    schermo.setText("input1");
    }
    else {
    input2 = input2 + "2";
    membro2 = Integer.parseInt(input2);
    schermo.setText("input1");
    }
    }

    private void Numero1MouseClicked(java.awt.event.MouseEvent evt) {
    if (operazione == 0) {
    input1 = input1 + "1";
    membro1 = Integer.parseInt(input1);
    schermo.setText("input1");
    }
    else {
    input2 = input2 + "1";
    membro2 = Integer.parseInt(input2);
    schermo.setText("input1");
    }
    }



    private void exitForm(java.awt.event.WindowEvent evt) {
    System.exit(0);
    }

    public static void main(String args[]) {
    new prova().show();
    }

    private javax.swing.JPanel Corpo;
    private javax.swing.JPanel Tastiera;
    private javax.swing.JButton Numero1;
    private javax.swing.JButton Numero2;
    private javax.swing.JButton Uguale;
    private javax.swing.JButton Meno;
    private javax.swing.JButton Diviso;
    private javax.swing.JButton Piu;
    private javax.swing.JButton Per;
    private javax.swing.JLabel schermo;
    private int membro1 = 0;
    private int membro2 = 0;
    private String input1 = null;
    private String input2 = null;
    private int operazione = 0;
    private int risultato = 0;
    }




    non spaventatevi....questa è una versione semplificata del programmino che ho messo su in queste orette...sto cercando di fare una calcolatrice....sto cercando un metodo per farla funzionare...

    non so se si capisce il codice...è un po incasinato cmq sia a parte il jPanel Corpo che mi è stato detto essere inutile non riesco a far funzionare i tasti come voglio io...

    allora, per effettuare le operazioni ho deciso di appoggiarmi ad una variabile int operazione che viene inizializzata ogni vola che viene premuto un tasto corrispondente ad una operazione....

    per scrivere i membri dell'operazione quando si preme un tasto viene controllata la variabile operazione e se questa è diversa da 0 vengono aggiornate le variabili int membro2 e String input2 (so che potrei eliminare la variabile inputX e effettuare un toString da passare al .setText() ma mi è venuto in mente dopo averlo scritto.... :tongue: )altrimenti vengono aggiornate le variabilei input1 e membro1 (che corrispondono in parole povere ai primi membri dell'operazione)..

    infine quando si preme uguale con uno switch...case effettuo l operazione tra membro1 e membro2 e stampo il risultato sull etichetta....

    o almeno questo è quello che avevo pensato facesse ma invece provando il programma quando premo i tasti non succede niente....

    magari ci sarebbe un algoritmo migliore del mio ma a me ora come ora non viene in mente niente...
    LINUX
    Powered by Ubuntu
    Powered by MacOS X


    ...vivi la tua vita come se ogni giorno fosse l'ultimo, poichè un giorno lo sarà...

  10. #10
    sto facendo la stessa cosa per un progetto da consegnare per un esame all'università:

    ho usato un jtext field come schermo e un grid layout come tastiera ed ho messo questi 2 componenti in un file struttura.java con un borderlayout (ovviamente schermo north e tastiera center)

    ho creato i pulsanti e gli ho associato 2 ascoltatori:
    1 per le operazioni
    1 per i numeri

    nell'ascoltatore delle operazioni leggo e scrivo il campo di testo (ovviamente scrivo i risultati)

    nell'altro ascoltatore scrivo solamente i numeri nel campo di testo

    funziona tutto alla xfezione (è stato un pò un casino aggiustare le precedenze degli operatori ( x e : e mod prima di + e -)
    avevo anche messo x! e simili prima di tutti, ma li ho levati per problemi vari.

    ora vorrei inserire gli ascoltatori per i tasti:
    qualcuno saprebbe dirmi, non scrivendo codice ma semplicemente a parole come devo fare per associare un evento ad un tasto?

    devo creare un altro ascoltatore keylistener e nel file struttura.java in cui associo l'ascoltatore ad ogni pulsante, devo anche aggiungere un evento keylistener?

    grazie!

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.