Newsgroup: it.comp.java
Titolo: Aiuto i bottoni!!

Salve sono Mario da Lecce!
Studente in un corso ifts per divenire progettista in ambiente distribuito!
Avrei bisogno di un piccolo aiuto e quindi spero che qualcuno mi possa
dedicare qualche minuto pur sapendo 
quanto per un programmatore il tempo sia prezioso.
Sto realizzando una battaglia navale per un esame ma ho un problema con i
pulsanti:
vorrei che schiacciandone uno qualsiasi questo cambi di colore ma finora
nn ci sono riuscito 
e purtroppo l'esame è vicino.
Vi sarei grato se deste un occhiata al mio problema anche solo per un
consiglio.
Allego il codice del programma il quale per il momento visualizza una
piccola griglia con 
nove bottoni schiacciandone uno in particolare l'ultimo a destra in basso
cambia di colore.
Grazie
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
 class Battleship extends JFrame implements ActionListener {
   JButton jButtons[] = new JButton[9];
  public Battleship() {
     super();
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     this.setTitle("Battaglia Navale");
     this.setLocation(100, 50);
     this.setSize(200, 150);
     this.inizializzaGUI();
     this.setResizable(false);
     this.show();}
  private void inizializzaGUI(){
   JPanel jPanel = new JPanel();
  for(int i=0;i<9;i++){
     jButtons[i] = new JButton();
     jButtons[i].setBackground(new Color(60, 100, 150));
     jButtons[i].setBorderPainted(false);
     jButtons[i].setBorder(BorderFactory.createEtchedBorder());
     jButtons[i].setPreferredSize(new Dimension(20, 20));}
     jPanel.setLayout(new GridLayout(3, 3, 2, 2));
  for(int i=0;i<9;i++){
     jPanel.add(jButtons[i]);
  jButtons[i].addActionListener(this);}
     JPanel jPanel2 = new JPanel();
     jPanel2.setBackground(new Color(204, 204, 204));
     jPanel2.add(jPanel);
     getContentPane().add(jPanel2, BorderLayout.WEST);
}
public void actionPerformed(ActionEvent e){
Object pulsantePremuto = e.getSource();
 if (pulsantePremuto==jButtons[8])
jButtons[8].setBackground(Color.red);
}
}
public class Pulsanti{
   public static void main(String[] args){
new Battleship();
}
}
---------------------------------------------------------------------------
Messaggio inviato attraverso 
http://www.trucchiperpc.it
 - sezione newsgroup

}
[CUT]
con
public void actionPerformed(ActionEvent e) {
    JButton pulsantePremuto = (JButton)e.getSource();
    pulsantePremuto.setBackground(Color.red);
}
Per questioni di bottoni e affini (e *molto* altro), ti consiglio di 
guardarti il Tutorial Sun
http://java.sun.com/docs/books/tutorial/
e fare un giro per i demo (con codice) della cartella demo del tuo jdk.
HTH
-- 
Ciao
	Fabrizio C.

Ciao Fabrizio
mi puoi dare tutti i consigli e i miglioramenti che pensi siano 
opportuni ho necessità di imparare (soprattutto) oltre che chiaramente a
passare 
l'esame! Quindi sono qui ad ascoltarti ed a imparare.
Grazie
NB Come posso una volta schiacciato il bottone 
fare in modo che lui nn reagisca nuovamente(riconoscendo che è già
stato schiacciato)!
Uso un array?
Ho scaricato i tutorials per studiarli ma se potessi darmi una mano ti
sarei grato!
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.sound.sampled.*;
import java.io.*;
public class Battleship extends JFrame implements ActionListener {
   JButton jButtons[] = new JButton[9];
    private char [][] griglia;
    final int righe = 3;
    final int colonne = 3;
  public Battleship() {
     super();
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     this.setTitle("Battaglia Navale");
     this.setLocation(100, 50);
     this.setSize(200, 150);
     this.inizializzaGUI();
     this.setResizable(false);
     this.show();}
  private void inizializzaGUI(){
   JPanel jPanel = new JPanel();
  for(int i=0;i<9;i++){
     jButtons[i] = new JButton();
     jButtons[i].setBackground(new Color(60, 100, 150));
     jButtons[i].setBorderPainted(false);
     jButtons[i].setBorder(BorderFactory.createEtchedBorder());
     jButtons[i].setPreferredSize(new Dimension(20, 20));
     }
     jPanel.setLayout(new GridLayout(3, 3, 2, 2));
  for(int i=0;i<9;i++){
     jPanel.add(jButtons[i]);
     jButtons[i].addActionListener(this);}
       griglia = new char [righe][colonne];
       //riempio di valori 0
       for(int i = 0; i < righe; i++)
       for(int y = 0; y < colonne; y++)
       griglia[i][y] = '0';
     JPanel jPanel2 = new JPanel();
     jPanel2.setBackground(new Color(204, 204, 204));
     jPanel2.add(jPanel);
     getContentPane().add(jPanel2, BorderLayout.WEST);
}
public void getsuono(){
File sf=new File("1.wav");
AudioFileFormat aff;
AudioInputStream ais;
try
{
aff=AudioSystem.getAudioFileFormat(sf);
ais=AudioSystem.getAudioInputStream(sf);
AudioFormat af=aff.getFormat();
DataLine.Info info = new DataLine.Info(
Clip.class,
ais.getFormat(),
((int) ais.getFrameLength() *
af.getFrameSize()));
Clip ol = (Clip) AudioSystem.getLine(info);
ol.open(ais);
ol.start();
}
catch(UnsupportedAudioFileException ee){}
catch(IOException ea){}
catch(LineUnavailableException LUE){};
}
public void actionPerformed(ActionEvent e) {
    JButton pulsantePremuto = (JButton)e.getSource();
    pulsantePremuto.setBackground(Color.red);
    getsuono();


 Uso un array?
Di boolean, magari.
Mi spiego: è un pò che non giocherello con swing eccetera, quindi forse non
è la soluzione migliore, però se crei insieme all'array di Jbutton un array
di boolean isClicked, e li inizializzi a false, in seguito ti basterà al
momento in cui si scatena l'evento vedere quale button è stato premuto, e
controllare se il boolean corrispondente è false. Se è false, scateni
l'evento e setti il boolean a true, se è true non scateni niente.
--------------------------------
Inviato via 
http://usenet.libero.it

Grazie ragazzi è scusate l'errore!
Ripeto io sono Mario 
tid...@libero.it
 o può capitare 
di usare Marco Terremoto ma sono sempre io!!
Scusate e spero di nn fare altri errori e comunque mi aspetto che 
me li corregiate! OK
Grazie e ciao 
NB Puoi essere + chiaro Paolo e da poco che uso java!
Thanks boy
Paolo wrote:



---------------------------------------------------------------------------


me li corregiate! OK
Ok, ok. Nessun problema.
L'importante è che gli errori siano fatti in buona fede: sui ng capita di 
tutto e allora... per mettere le mani avanti... :-)
-- 
Ciao
	Fabrizio C.

l'evento e setti il boolean a true, se è true non scateni niente.
Io suggerisco di vedere JToggleButton. ;-)
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
-- 
Ciao
	Fabrizio C.

Grazie! 
Del riferimento ma soprattutto di avermi creduto!
A presto
Fabrizio Camera wrote:



---------------------------------------------------------------------------


 
http://java.sun.com/docs/books/tutorial/uiswing/components/button.html
DOVEVA esserci qualcosa di meglio della mia idea... ;)


Ragazzi mi sono spaccato la testa ma nn sto riuscendo a risolvere il
problema !
Amen
Se qualcuno nn mi dà una mano forse la battaglia navale la farò a linea di
comando!
Sniff
Ripeto nn riesco a gestire l'evento in questione: forse in due settimane
nn potevo 
imparare java per una gui decente e per gli eventi! sigh!!
Bye ringrazio Fabrizio e Paolo comunque dell'apporto! A presto 
Paolo wrote:



---------------------------------------------------------------------------
