Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    problema di comunicazione di variabili in classi diverse

    le seguenti porzioni di codice sono utilizzate per la creazione di una calcolatrice:
    nella prima porzione ho creato 2 varibili nella classe PanelOperazioni
    mentre nella seconda classe (PanelTB) vado ad impostare il risultato.
    IL problema sta nel fatto che non c'è comunicazione come si vede anche nella seconda immagine.
    Qualcuno può aiutarmi?
    Cattura1.PNG
    Cattura.PNG

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nicholas1208 Visualizza il messaggio
    le seguenti porzioni di codice sono utilizzate per la creazione di una calcolatrice:
    nella prima porzione ho creato 2 varibili nella classe PanelOperazioni
    mentre nella seconda classe (PanelTB) vado ad impostare il risultato.
    IL problema sta nel fatto che non c'è comunicazione come si vede anche nella seconda immagine.
    Allora: innanzitutto quanto hai fatto vedere è poco e quindi non è comprensibile la struttura generale della applicazione. Vedo dei campi static. Questo NON è buono, in generale, e praticamente sicuramente non è appropriato nella applicazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Scusa sono nuovo del forum dimmi se così può bastare,
    non ho inviato le classi complete.

    public class PanelOperazioni extends JPanel {
    //bottoni operazionali
    private JButton più = new JButton("+");
    private JButton meno = new JButton("-");
    private JButton per = new JButton("x");
    private JButton divisione = new JButton("/");

    //risultato
    static int a=1;
    static int b=0;

    //variabile che stabilisce qual'è l'operazione in
    static int i=0;

    //cotruttore
    public PanelOperazioni()
    {
    this.setLayout(new GridLayout(4,1));
    addBO(più);
    addBO(meno);
    addBO(per);
    addBO(divisione);

    più.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    if(meno.isEnabled()==true && per.isEnabled()==true && divisione.isEnabled()==true)
    {
    più.setEnabled(false);
    risultato.setText("");
    i=0;
    a=Integer.valueOf(risultato.getText());
    }
    else
    {

    }


    public class PanelTB extends JPanel {
    //oggetti di riferimento del pannello
    static JLabel risultato = new JLabel("ciao");
    private JButton uguale = new JButton("=");


    public PanelTB()
    {
    this.setPreferredSize(new Dimension(250, 70));
    addJL(risultato);
    addB(uguale);
    risultato.setLocation(10,10);
    risultato.setPreferredSize(new Dimension(240, 70));
    risultato.setOpaque(true);
    risultato.setBackground(Color.yellow);
    this.setVisible(true);

    uguale.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    b=Integer.valueOf(risultato.getText());
    switch(i)
    {
    case 0:{risultato.setText(operazionePiù(a,b));break;}
    case 1:{risultato.setText(operazioneMeno(a,b));break;}
    case 2:{risultato.setText(operazionePer(a,b));break;}
    case 3:{risultato.setText(operazioneDiviso(a,b));break; }
    }

    }
    });
    }

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da nicholas1208 Visualizza il messaggio
    Scusa sono nuovo del forum dimmi se così può bastare,
    non ho inviato le classi complete.
    Sì, ora si vede di più. Ma come ho detto, e lo ripeto, campi static sono "il male" (se non per design o architetture ben precise e con motivazioni valide).
    E comunque, perché vuoi fare proprio due classi "pannello" separate? Visto che comunque le nozioni a livello di design delle classi non le hai ancora molto, scegli (almeno per ora) la strada più semplice: fai tutto all'interno di una unica classe. Questo NON vuol dire che non puoi usare più pannelli ... semplicemente non separare in modo radicale le cose con il dubbio poi di non sapere come "collegare" nel modo appropriato le due entità.
    Ultima modifica di andbin; 03-01-2017 a 16:15
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    posso chiederti perchè sono il "male"?
    Da quello che so attributi, classi o metodi vengono definiti statici
    quando possono essere utilizzati in classi diverse.

  6. #6
    Comunque problema risolto con l'utilizzo di attributi statici.
    Il problema stava nel fatto di non aver impostato gli attributi
    nella classe ricevente.

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