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

    Exception in thread Java

    Salve, ho un problema con il mio programma che simula una partita di TRIS (senza IA).
    PS Ho dovuto levare le parti restanti del codice per una questione di spazio
    Il problema in se comprare solo quando inserisco il metodo Condizioni() all'interno di un JButton come riportato in seguito:

    codice:
    Button bottone1 = new JButton("");
      bottone1.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone1.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone1.setForeground(Color.BLUE);
        }
        else 
        {
         bottone1.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();  //AGGIUNGO IL METODO (se non aggiungo il metodo non ci sono errori)
         
        
       }
      });
    Nel metodo Condizioni() ci sono, appunto, le varie condizioni che si possono creare nel gioco del TRIS e al click del mouse (su un qualsiasi bottone) viene riportato il seguente errore:

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Tris.Tris_1.Condizioni(Tris_1.java:86)
    at Tris.Tris_1.access$3(Tris_1.java:84)
    at Tris.Tris_1$3.actionPerformed(Tris_1.java:333)
    at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessI mpl.doIntersectionPrivilege(Unknown Source)

    ECCO IL CODICE:

    codice:
    
    
    package Tris;
    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import java.awt.BorderLayout;
    import javax.swing.JPanel;
    import javax.swing.border.LineBorder;
    import java.awt.Color;
    import java.awt.GridLayout;
    import java.awt.event.ActionListener;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import java.awt.Font;
    import java.awt.event.ActionEvent;
    import javax.swing.SwingConstants;
    import javax.swing.JTextField;
    public class Tris_1 {
     private JFrame frame;
     private String inizio = "X";
     private int contX = 0;
     private int contO = 0;
     private JLabel bottone1;
     private JLabel bottone2;
     private JLabel bottone3;
     private JLabel bottone4;
     private JLabel bottone5;
     private JLabel bottone6;
     private JLabel bottone7;
     private JLabel bottone8;
     private JLabel bottone9;
     private JTextField txtContX;
     private JTextField txtContO;
     
     
     /**
      * Launch the application.
      */
     public static void main(String[] args) {
      EventQueue.invokeLater(new Runnable() {
       public void run() {
        try {
         Tris_1 window = new Tris_1();
         window.frame.setVisible(true);
        } catch (Exception e) {
         e.printStackTrace();
        }
       }
      });
     }
     /**
      * Create the application.
      */
     public Tris_1() 
     {
      initialize();
     }
     
     private void Punteggio() 
     {
      txtContX.setText(String.valueOf(contX++));
      txtContO.setText(String.valueOf(contO++));
     }
     private void Scelta() 
     {
      if (inizio.equalsIgnoreCase("X"))  //equalsIgnoreCase serve per fare un confronto non case-sensitive (non bada alle minuscole e alle maiuscole)
      {
        inizio = "O";
      }
       else
       {
        inizio= "X";   
       }
     }
     
     
     private void Condizioni()
     {
      String b1 = bottone1.getText();
      String b2 = bottone2.getText();
      String b3 = bottone3.getText();
      String b4 = bottone4.getText();
      String b5 = bottone5.getText();
      String b6 = bottone6.getText();
      String b7 = bottone7.getText();
      String b8 = bottone8.getText();
      String b9 = bottone9.getText();
      
     //COMBINAZIONI X - ORIZZONTALI
      
     if (b1 == ("X") && b2 == ("X") && b3 == ("X"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     if (b4 == ("X") && b5 == ("X") && b6 == ("X"))
     {
     
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     if (b7 == ("X") && b8 == ("X") && b9 == ("X"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     //COMBINAZIONI X - VERTICALI
     
     if (b1 == ("X") && b4 == ("X") && b7 == ("X"))
     {
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE);
      contX++;
      Punteggio();
      
     }
     
     if (b2 == ("X") && b5 == ("X") && b8 == ("X"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     if (b3 == ("X") && b6 == ("X") && b9 == ("X"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     //COMBINAZIONI X - DIAGONALI
     
     if (b1 == ("X") && b5 == ("X") && b9 == ("X"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     if (b3 == ("X") && b5 == ("X") && b7 == ("X"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contX++;
      Punteggio();
      
     }
     
     //COMBINAZIONI O - ORIZZONTALI
     
     if (b1 == ("O") && b2 == ("O") && b3 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     if (b4 == ("O") && b5 == ("O") && b6 == ("O"))
     {
     
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     if (b7 == ("O") && b8 == ("O") && b9 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     //COMBINAZIONI O - VERTICALI
     
     if (b1 == ("O") && b4 == ("O") && b7 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     if (b2 == ("O") && b5 == ("O") && b8 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     if (b3 == ("O") && b6 == ("O") && b9 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     //COMBINAZIONI O - DIAGONALI
     
     if (b1 == ("O") && b5 == ("O") && b9 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     if (b3 == ("O") && b5 == ("O") && b7 == ("O"))
     {
      
      ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
      JOptionPane.showMessageDialog(frame, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
      contO++;
      Punteggio();
      
     }
     
     
    }
     
     
     /**
      * Initialize the contents of the frame.
      */
     private void initialize() {
      frame = new JFrame();
      frame.setBounds(100, 100, 1200, 600);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().setLayout(new BorderLayout(0, 0));
      
      JPanel panel = new JPanel();
      panel.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      frame.getContentPane().add(panel, BorderLayout.CENTER);
      panel.setLayout(new GridLayout(3, 5, 2, 2));
      
      JPanel panel_1 = new JPanel();
      panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_1);
      panel_1.setLayout(new BorderLayout(0, 0));
      
      JButton bottone1 = new JButton("");
      bottone1.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone1.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone1.setForeground(Color.BLUE);
        }
        else 
        {
         bottone1.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
        
       }
      });

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    La riga 86 (segnalata dall'eccezione) del file che hai postato è questa:

    codice:
    String b8 = bottone8.getText();

    L'eccezione sollevata è una NullPointerException... ed, in effetti, bottone8 non è inizializzato da nessuna parte (nel metodo initialize). Io credo, comunque, che la riga a cui fa riferimento la tua eccezione sia questa:

    codice:
    String b1 = bottone1.getText();

    In quanto nessuno dei pulsanti che hai dichiarato viene inizializzato (all'interno del metodo inizialize() vai ad inizializzare un pulsante "bottone1" dichiarato all'interno del metodo stesso, che quindi va fuori scope immediatamente).

    PS: le stringhe sono oggetti e gli oggetti non si confrontano con l'operatore ==, ma usando il metodo equals(), quindi le condizioni che hai usato nel metodo Condizioni() non sono corrette:

    codice:
    if (b1 == ("X") && b2 == ("X") && b3 == ("X"))
    
    // Da correggere:
    if (b1.equals("X") && b2.equals("X") && b3.equals("X"))

    Ciao.
    Ultima modifica di LeleFT; 08-05-2017 a 11:26
    "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

  3. #3
    Ciao , innanzitutto vorrei ringraziarti per avermi risposto. In merito al programma, ho corretto le condizioni usando il metodo equals() e fin qui ci siamo. Per l'eccezione NullpointerException, invece, mi hai detto : "In quanto nessuno dei pulsanti che hai dichiarato viene inizializzato (all'interno del metodo inizialize() vai ad inizializzare un pulsante "bottone1" dichiarato all'interno del metodo stesso, che quindi va fuori scope immediatamente).", ma a causa di un problema di spazio non ho potuto inserire il resto del codice e quindi anche dove ho inizializzato tutti i bottoni come in seguito:

    codice:
     /**
      * Initialize the contents of the frame.
      */
     private void initialize() {
      frame = new JFrame();
      frame.setBounds(100, 100, 1200, 600);
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().setLayout(new BorderLayout(0, 0));
      
      JPanel panel = new JPanel();
      panel.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      frame.getContentPane().add(panel, BorderLayout.CENTER);
      panel.setLayout(new GridLayout(3, 5, 2, 2));
      
      JPanel panel_1 = new JPanel();
      panel_1.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_1);
      panel_1.setLayout(new BorderLayout(0, 0));
      
      JButton bottone1 = new JButton("");
      bottone1.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone1.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone1.setForeground(Color.BLUE);
        }
        else 
        {
         bottone1.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
        
       }
      });
      bottone1.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_1.add(bottone1, BorderLayout.CENTER);
      
      JPanel panel_2 = new JPanel();
      panel_2.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_2);
      panel_2.setLayout(new BorderLayout(0, 0));
      
      JButton bottone2 = new JButton("");
      bottone2.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone2.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone2.setForeground(Color.BLUE);
        }
        else 
        {
         bottone2.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone2.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_2.add(bottone2, BorderLayout.CENTER);
      
      JPanel panel_3 = new JPanel();
      panel_3.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_3);
      panel_3.setLayout(new BorderLayout(0, 0));
      
      JButton bottone3 = new JButton("");
      bottone3.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone3.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone3.setForeground(Color.BLUE);
        }
        else 
        {
         bottone3.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone3.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_3.add(bottone3, BorderLayout.CENTER);
      
      JPanel panel_4 = new JPanel();
      panel_4.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_4);
      panel_4.setLayout(new BorderLayout(0, 0));
      
      JLabel lblGiocatoreX = new JLabel("GIOCATORE X:");
      lblGiocatoreX.setHorizontalAlignment(SwingConstants.CENTER);
      lblGiocatoreX.setFont(new Font("Tahoma", Font.BOLD, 29));
      panel_4.add(lblGiocatoreX, BorderLayout.CENTER);
      
      JPanel panel_5 = new JPanel();
      panel_5.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_5);
      panel_5.setLayout(new BorderLayout(0, 0));
      
      txtContX = new JTextField();
      txtContX.setFont(new Font("Tahoma", Font.BOLD, 48));
      txtContX.setHorizontalAlignment(SwingConstants.CENTER);
      txtContX.setText("0");
      panel_5.add(txtContX, BorderLayout.CENTER);
      txtContX.setColumns(10);
      
      JPanel panel_6 = new JPanel();
      panel_6.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_6);
      panel_6.setLayout(new BorderLayout(0, 0));
      
      JButton bottone4 = new JButton("");
      bottone4.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone4.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone4.setForeground(Color.BLUE);
        }
        else 
        {
         bottone4.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone4.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_6.add(bottone4, BorderLayout.CENTER);
      
      JPanel panel_7 = new JPanel();
      panel_7.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_7);
      panel_7.setLayout(new BorderLayout(0, 0));
      
      JButton bottone5 = new JButton("");
      bottone5.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone5.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone5.setForeground(Color.BLUE);
        }
        else 
        {
         bottone5.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone5.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_7.add(bottone5, BorderLayout.CENTER);
      
      JPanel panel_8 = new JPanel();
      panel_8.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_8);
      panel_8.setLayout(new BorderLayout(0, 0));
      
      JButton bottone6 = new JButton("");
      bottone6.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone6.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone6.setForeground(Color.BLUE);
        }
        else 
        {
         bottone6.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone6.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_8.add(bottone6, BorderLayout.CENTER);
      
      JPanel panel_9 = new JPanel();
      panel_9.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_9);
      panel_9.setLayout(new BorderLayout(0, 0));
      
      JLabel lblGiocatoreO = new JLabel("GIOCATORE O:");
      lblGiocatoreO.setHorizontalAlignment(SwingConstants.CENTER);
      lblGiocatoreO.setFont(new Font("Tahoma", Font.BOLD, 29));
      panel_9.add(lblGiocatoreO, BorderLayout.CENTER);
      
      JPanel panel_10 = new JPanel();
      panel_10.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_10);
      panel_10.setLayout(new BorderLayout(0, 0));
      
      txtContO = new JTextField();
      txtContO.setFont(new Font("Tahoma", Font.BOLD, 48));
      txtContO.setHorizontalAlignment(SwingConstants.CENTER);
      txtContO.setText("0");
      panel_10.add(txtContO, BorderLayout.CENTER);
      txtContO.setColumns(10);
      
      JPanel panel_11 = new JPanel();
      panel_11.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_11);
      panel_11.setLayout(new BorderLayout(0, 0));
      
      JButton bottone7 = new JButton("");
      bottone7.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone7.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone7.setForeground(Color.BLUE);
        }
        else 
        {
         bottone7.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone7.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_11.add(bottone7, BorderLayout.CENTER);
      
      JPanel panel_12 = new JPanel();
      panel_12.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_12);
      panel_12.setLayout(new BorderLayout(0, 0));
      
      JButton bottone8 = new JButton("");
      bottone8.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone8.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone8.setForeground(Color.BLUE);
        }
        else 
        {
         bottone8.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
       }
      });
      bottone8.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_12.add(bottone8, BorderLayout.CENTER);
      
      JPanel panel_13 = new JPanel();
      panel_13.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_13);
      panel_13.setLayout(new BorderLayout(0, 0));
      
      JButton bottone9 = new JButton("");
      bottone9.addActionListener(new ActionListener() {
       public void actionPerformed(ActionEvent e) {
        
        bottone9.setText(inizio);
        if (inizio.equalsIgnoreCase("X"))
        {
         bottone9.setForeground(Color.BLUE);
        }
        else 
        {
         bottone9.setForeground(Color.RED);
        }
        
        Scelta();
        Condizioni();
         
       }
      });
      bottone9.setFont(new Font("Tahoma", Font.BOLD, 97));
      panel_13.add(bottone9, BorderLayout.CENTER);
      
      JPanel panel_14 = new JPanel();
      panel_14.setBorder(new LineBorder(new Color(0, 0, 0), 2));
      panel.add(panel_14);
      panel_14.setLayout(new BorderLayout(0, 0));
    Come puoi vedere, tutti i bottoni sono stati inizializzati (all'interno del metodo initialize()). Ho forse sbagliato come e dove inizializzarli? Se si, come dovrei procedere? Ti ringrazio ancora.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Come posso vedere dal tuo nuovo post, non hai inizializzato nessuno dei pulsanti che hai dichiarato a livello di classe: hai semplicemente ridichiarato e creato tanti pulsanti locali al metodo, che quindi, terminato il metodo, escono dallo scope.

    codice:
    private JButton pulsante;
    ...
    public void metodo() {
       // Qui non sto inizializzando l'oggetto di istanza, ma sto creando una nuova variabile locale!!
       // Infatti, la sto ri-dichiarando!
       JButton pulsante = new JButton("...");
    }
    Quando tu anteponi il tipo davanti al nome di una variabile la stai dichiarando. Se la ri-dichiari dentro ad un metodo, quella dichiarata a livello di classe viene "nascosta" da quella locale.

    codice:
    private JButton pulsante;
    ...
    public void metodo() {
       // Questo è corretto: sto inizializzando la variabile di istanza dichiarata fuori
       pulsante = new JButton("...");
    }

    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

Tag per questa discussione

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.