Codice PHP:
import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.Insets;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class provaIcon extends JFrame implements MouseListener{
private static final long serialVersionUID = 1L;
int dimCasella = 30; //25
int xMax = -10;
int yMax = -10;
Icon iconaMinaNonCliccata;
Icon iconaBandiera;
Icon iconaQmark;
Icon iconaMinaCliccata;
// ////////////////////////////////////////////////////
// dichiarazione oggetti (pulsanti, label textfield,panel)
// ////////////////////////////////////////////////////
// button
JButton button_restart = new JButton("Nuova Partita");
JButton[][] button_scacchiera;//
//JLabel
JLabel labelIstruz = new JLabel ("Inserire le dimensioni della campo minato");
JLabel labelX = new JLabel("X");
JLabel labelY = new JLabel("Y");
JLabel labelMine = new JLabel("Mine");
//JTextField (per inserire valori x, y, mine)
JTextField campoX = new JTextField();
JTextField campoY = new JTextField();
JTextField campoMine = new JTextField();
//Font
Color defaultColor;
Font buttonFont = new Font ("buttonFont", Font.BOLD,10);
/**
* Si occupa di definire e disegnare scacchiera e pulsanti
* @param titolo nome della finestra in cui è aperto il frame
*/
public provaIcon(String titolo) { // viene visualizzato come titolo della
// finestra
super(titolo);// richiama il costruttore della superclasse Jframe
// passando come parametro la stringa da visualizzare
// sulla barra del titolo
getContentPane().setLayout(null);
defaultColor = button_restart.getBackground();
iconaMinaNonCliccata = createImageIcon("images/mina.jpg", "mina");
iconaBandiera = createImageIcon("images/flag.jpg", "mina segnata");
iconaQmark = createImageIcon("images/questMark.jpg", "mina?");
iconaMinaCliccata = createImageIcon("images/mina.jpg", "M");
// ////////////////////////////////////////////////////
// definisco le dimensioni degli oggetti
// ////////////////////////////////////////////////////
campoX.setBounds(40,90,30,30);
campoY.setBounds(100,campoX.getY(),30,30);
campoMine.setBounds(campoX.getX() + 150,campoY.getY(), 30, 30);
button_restart.setBounds(campoMine.getX() + 80, campoX.getY(), 120, 28); // setto la dimensionetext_P1.setBounds(60,26,60,40);
labelX.setBounds(campoX.getX()- 20,campoX.getY(),40,40);
labelY.setBounds(campoY.getX()- 20,campoY.getY(),40,40);
labelMine.setBounds(campoMine.getX()- 40,campoY.getY(),40,40);
labelIstruz.setBounds(labelX.getX() - 10,campoX.getY() - 40, 400, 40);
// ////////////////////////////////////////////////////
// metto quello che voglio sia disegnato nel frame
// ///////////////////////////////////////////////////
getContentPane().add(labelIstruz);
getContentPane().add(button_restart);
getContentPane().add(labelX);
getContentPane().add(labelY);
getContentPane().add(campoX);
getContentPane().add(campoY);
getContentPane().add(campoMine);
getContentPane().add(labelMine);
button_restart.addMouseListener(this);//aggiungo il pulsante
//parametri del frame
setResizable(false);
setBounds(100, 100, 800, 650); //dim frame
setVisible(true); // x rendere visibile il frame(di default non lo è)
}
public void setCasella(int x, int y){
button_scacchiera[x][y].setIcon(null);
button_scacchiera[x][y].setBackground(Color.white);
button_scacchiera[x][y].setEnabled(false);
}
protected ImageIcon createImageIcon(String path,String description) {
java.net.URL imgURL = getClass().getResource(path);
if (imgURL != null) {
return new ImageIcon(imgURL, description);
} else {
System.err.println("File assente: " + path);
return null;
}
}
/**
* Si occupa di gestire l'evento pressione di un tasto del mouse, in base al bottone
* grafico premuto.
* @param e l'evento pressione del tasto
*/
public void mousePressed(MouseEvent e) {
int xMina = -10;
int yMina = -10;
int numMineTemp = -10;
///////////////////////////////////////////////////////////////////////
///pressione di button_restart
///////////////////////////////////////////////////////////////////////
if(e.getComponent() == button_restart){
labelIstruz.setText("Inserire le dimensioni della campo minato");
//cancello i bottoni (solo se non è la prima partita)
if (button_scacchiera != null) {
// cicli for su i e j per rimuovere i vecchi pulsanti
for (int i = 0; i < xMax; i++){
for (int j = 0; j < yMax; j++){
getContentPane().remove(button_scacchiera[i][j]);
}
}
}
//prendo i parametri dell'utente
try {
xMax = Integer.parseInt(campoX.getText());
yMax = Integer.parseInt(campoY.getText());
}
catch(NumberFormatException e1 ){
labelIstruz.setText("formato non valido");
}
if ((xMax > 0) && (xMax < 40)){
if ((yMax > 0) && (yMax < 40)){
labelIstruz.setText("Scegli una casella..");
//disegno scacchiera e pulsanti
button_scacchiera = new JButton[xMax][yMax];
//definisco i singoli bottoni
for (int x = 0; x < xMax; x++){
for (int y = 0; y < yMax; y++){
button_scacchiera[x][y] = new JButton("");
button_scacchiera[x][y].setFont(buttonFont);
button_scacchiera[x][y].setBounds(15 + (y*dimCasella),
150 + (x*dimCasella), dimCasella, dimCasella);
button_scacchiera[x][y].setMargin(new Insets(2,6,2,6));
button_scacchiera[x][y].setBackground(defaultColor);
button_scacchiera[x][y].setIcon(iconaQmark);
//button_scacchiera[x][y].setText("?");
getContentPane().add(button_scacchiera[x][y]);
button_scacchiera[x][y].addMouseListener(this);
}
}
getContentPane().repaint();
}
}
}
// /////////////////////////////////////////////////////////////////////
///pressione di una casella
///////////////////////////////////////////////////////////////////////
for (int x = 0; x < xMax; x++){
for (int y = 0; y < yMax; y++){
//se viene premuta 1 casella
if (e.getComponent() == button_scacchiera[x][y]){
if (e.getButton() == MouseEvent.BUTTON3){
button_scacchiera[x][y].setText("");
button_scacchiera[x][y].setIcon(iconaMinaNonCliccata);
}
else if (e.getButton() == MouseEvent.BUTTON1){
button_scacchiera[x][y].setEnabled(false);
button_scacchiera[x][y].setDisabledIcon(iconaMinaNonCliccata);
} //chiudo else
}
}
}
}//Fine pressione mouse
public void mouseReleased(MouseEvent e) {
//System.out.println("hai lasciato 1 tasto");
}
public void mouseEntered(MouseEvent e) {
// quando il cursore del mouse entra nell'area interessata
}
public void mouseExited(MouseEvent e) {
// quando il cursore del mouse esce dall'area interessata
}
public void mouseClicked(MouseEvent e) {
//System.out.println("mouseClick");
}
public static void main( String [] args ){
new provaIcon( "Campo minato" ).setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}