codice:
package monopoly.client.gui;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import javax.swing.*;
import monopoly.tavola.Tavola;
import monopoly.tavola.casella.Societa;
import monopoly.tavola.casella.Stazione;
import monopoly.tavola.casella.Terreno;
import monopoly.util.Colori;
public class DialogContratto extends JDialog
{
public DialogContratto(Frame parent, String title, boolean modal)
{
super(parent, title, modal);
try
{
//this.setSize(750, 450);
setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
panel.setLayout(null);
getContentPane().add(panel);
contratto.setText("");
label.setText("Inserisci numero Casella ");
ok.setText("OK");
pane.setText(" ");
contratto.setBounds(250, 40, 50, 20);
label.setBounds(50, 40, 150, 20);
ok.setBounds(350, 40, 100, 20);
pane.setBounds(50, 100, 250, 250);
panel.add(contratto);
panel.add(label);
panel.add(ok);
panel.add(pane);
pane.setEditable(false);
setVisible(true);
if(title.equals("Stampa Terreno"))
jbInitTerreno();
else if(title.equals("Stampa Societa"))
jbInitSocieta();
else if(title.equals("Stampa Stazione"))
jbInitStazione();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public DialogContratto(String title)
{
this(null, title, false);
System.out.println("Altezza" + this);
panel.setLayout(null);
getContentPane().add(panel);
contratto.setText("");
label.setText("Inserisci numero Casella ");
ok.setText("OK");
pane.setText(" ");
contratto.setBounds(250, 40, 50, 20);
label.setBounds(50, 40, 150, 20);
ok.setBounds(350, 40, 100, 20);
pane.setBounds(50, 100, 250, 250);
panel.add(contratto);
panel.add(label);
panel.add(ok);
panel.add(pane);
pane.setEditable(false);
setVisible(true);
if(title.equals("Stampa Terreno"))
jbInitTerreno();
else if(title.equals("Stampa Stazione"))
jbInitStazione();
else if(title.equals("Stampa Societa"))
jbInitSocieta();
}
private void jbInitTerreno()
{
int x = 350, y = 100;
Colori coloreTerreno = null;
for(int i = 0; i < Tavola.getInstance().getNUM_CASELLE(); i++)
{
if(Tavola.getInstance().getCasella(i) instanceof Terreno)
{
Terreno terreno = (Terreno) Tavola.getInstance().getCasella(i);
if(coloreTerreno == null)
coloreTerreno = terreno.getColore();
if(coloreTerreno.equals(terreno.getColore()))
{
JLabel label = new JLabel(i + " - " + terreno.getNome());
label.setBounds(x, y, 150, 20);
panel.add(label);
y += 20;
}
else
{
y += 20;
if(y + 60 > 450)
{
y = 100;
x = 550;
}
coloreTerreno = terreno.getColore();
JLabel label = new JLabel(i + " - " + terreno.getNome());
label.setBounds(x, y, 150, 20);
panel.add(label);
y += 20;
}
}
}
ok.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
int numContratto = Integer.parseInt(contratto.getText());
if(numContratto >= 0 && numContratto < Tavola.getInstance().getNUM_CASELLE())
{
if (Tavola.getInstance().getCasella(numContratto) instanceof Terreno)
pane.setText(((Terreno)Tavola.getInstance().getCasella(numContratto)).stampaContratto());
else
pane.setText("Non è una Casella Terreno");
}
else
{
pane.setText("Il numero inserito non è valido");
}
}
catch(NumberFormatException ex)
{
JOptionPane.showMessageDialog(panel, "Devi inserire un valore intero", "Errore!", JOptionPane.ERROR_MESSAGE);
}
}
});
}
private void jbInitStazione()
{
int x = 350, y = 100, j = 0;
for(int i = 0; i < Tavola.getInstance().getNUM_CASELLE(); i++)
{
if(Tavola.getInstance().getCasella(i) instanceof Stazione)
{
JLabel label = new JLabel(i + " - " + Tavola.getInstance().getCasella(i).getNome());
label.setBounds(x, y, 150, 20);
panel.add(label);
y += 20;
j++;
}
}
ok.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
int numContratto = Integer.parseInt(contratto.getText());
if(numContratto >= 0 && numContratto < Tavola.getInstance().getNUM_CASELLE())
{
if (Tavola.getInstance().getCasella(numContratto) instanceof Stazione)
pane.setText(((Stazione)Tavola.getInstance().getCasella(numContratto)).stampaContratto());
else
pane.setText("Non è una Casella Stazione");
}
else
{
pane.setText("Il numero inserito non è valido");
}
}
catch(NumberFormatException ex)
{
JOptionPane.showMessageDialog(panel, "Devi inserire un valore intero", "Errore!", JOptionPane.ERROR_MESSAGE);
}
}
});
}
private void jbInitSocieta()
{
int x = 350, y = 100, j = 0;
for(int i = 0; i < Tavola.getInstance().getNUM_CASELLE(); i++)
{
if(Tavola.getInstance().getCasella(i) instanceof Societa)
{
JLabel label = new JLabel(i + " - " + Tavola.getInstance().getCasella(i).getNome());
label.setBounds(x, y, 150, 20);
panel.add(label);
y += 20;
j++;
}
}
ok.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
int numContratto = Integer.parseInt(contratto.getText());
if(numContratto >= 0 && numContratto < Tavola.getInstance().getNUM_CASELLE())
{
if (Tavola.getInstance().getCasella(numContratto) instanceof Societa)
pane.setText(((Societa)Tavola.getInstance().getCasella(numContratto)).stampaContratto());
else
pane.setText("Non è una Casella Societa");
}
else
{
pane.setText("Il numero inserito non è valido");
}
}
catch(NumberFormatException ex)
{
JOptionPane.showMessageDialog(panel, "Devi inserire un valore intero", "Errore!", JOptionPane.ERROR_MESSAGE);
}
}
});
}
private static final long serialVersionUID = 1L;
private JPanel panel = new JPanel();
private static JTextField contratto = new JTextField();
private JButton ok = new JButton();
private JLabel label = new JLabel();
private JEditorPane pane = new JEditorPane();
}
ogni volta che si attivano i JOptionPane.showMessageDialog e clicco la prima volta su ok si riapre di nuovo e solo allora cliccando di nuovo su ok si chiude la finestra di dialogo.