[Java] ShowMessageDialog non funge

Ruggiero_Sguera

Nuovo Utente
6 Mag 2017
1
0
1
22
Ciao ragazzi, ho un problema con il mio programma che simula il TRIS (senza IA).
Il problema in se è il JOptionPane.showMessageDialog che non funge quando una condizione viene verificata ed è "vera" ed ho anche provato a mettere this, null e frame ai parametri, ma niente da fare.
Queste condizioni sono contenute nel metodo condizioni() con tutte le combinazioni che si possono creare nel TRIS (orizzontale, verticale, diagonale). Spero tantissimo mi possiate aiutare poiché questo sarà il mio progetto da portare per la maturità.
PS Ho dovuto "accorciare" il codice per questioni di spazio

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 Condizioni() //le varie combinazioni
    {
        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(null, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
        contX++;
        Punteggio();
       
//OUTPUT NON FUNZIONANTE IN TUTTE LE CONDIZIONI
   
    }
    
    if (b4 == ("X") && b5 == ("X") && b6 == ("X"))
    {
    
        ImageIcon icon = new ImageIcon("C:\\Users\\ruggiero\\workspace\\Tris_Progetto\\Icone\\vittoria.png");
        JOptionPane.showMessageDialog(null, "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(null, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
        contX++;
        Punteggio();
        
    }
    
    //COMBINAZIONI X - VERTICALI
    
    if (b1 == ("X") && b4 == ("X") && b7 == ("X"))
    {
        JOptionPane.showMessageDialog(null, "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(null, "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(null, "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(null, "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(null, "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(null, "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(null, "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(null, "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(null, "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(null, "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(null, "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 (null, "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(null, "Il giocatore X ha vinto!", "Vittoria!",JOptionPane.INFORMATION_MESSAGE, icon);
        contO++;
        Punteggio();
        
    }
    
    
}
    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";           
            }

         
 //non ho potute inserire il resto del codice
 

ottofonsuppost

Utente Attivo
10 Mag 2016
170
13
18
Prima occhiata e prima codificazione inutile: usare * in una libreria che si utilizza. A meno che lo spazio a disposizione non sia insufficiente. 7 messaggi IMPORT per la AWT + 8 per la JAVAX si trasformano da 15 a 2
 
Ultima modifica:

ottofonsuppost

Utente Attivo
10 Mag 2016
170
13
18
Seconda occhiata al listato: ogni volta che l'IF risulta vincente, NON SCRIVERE CODICE RIDONDANTE ma chiama un METODO che dice hai vinto, aggiorna il punteggio eccetera.
Poi prima dell'IF fatti una riga di codice provvisoria per vedere ad esempio cosa contiene b1; può darsi che non stai confrontando una X ma una x che sono cose nettamente diverse...
if (b1 == ("X") && b2 == ("X")) {if b3 == "X"...... e funziona
 
Ultima modifica: