Newsgroup: it.comp.java
Titolo: CACCIA AGLI ERRORI

Ragazzi sto impazzendo ma non riesco a capire gli errori o meglio il
compilatore non mi dà alcun errore, ma i metodi setName() e setSize()
non fanno nulla , inoltre schiacciando il tasto di dovrebbe aprire un
frame che contiene una tabella ma ciò non avviene
class Miobottone extends JButton implements ActionListener{
        Miobottone (String st,int l, int h){
		setName(st);
		setSize(l,h);
		addActionListener(this);
	}
	public void actionPerformed(ActionEvent ae){
		JFrame Fprincipale = new JFrame("Hello");
		Fprincipale.setSize(100,200);
		String[] intestazione =  {"campo1","campo2","campo3"};
		String[][] records ={
									{"questa","e'","una"},
									{"questa","e'","una"},
									{"prova","prova","prova"}
								};
		JTable tabella = new JTable(records,intestazione);
		JScrollPane scrollpane = new JScrollPane(tabella);
		Fprincipale.add(scrollpane,BorderLayout.CENTER);
		Fprincipale.show();
 
	}
}

 ha scritto nel messaggio
news:1129327692.7...@g49g2000cwa.googlegroups.com...
|Ragazzi sto impazzendo ma non riesco a capire gli errori o meglio il
|compilatore non mi dà alcun errore, ma i metodi setName() e setSize()
|non fanno nulla , inoltre schiacciando il tasto di dovrebbe aprire un
|frame che contiene una tabella ma ciò non avviene
Prima dovresti scrivere l'eventuale codice da correggere con un po'
d'indentazione altrimenti diventiamo scemi pure noi!
Il codice va scritto come sotto
class Miobottone extends JButton implements ActionListener{
        Miobottone (String st,int l, int h){
        setName(st);
        setSize(l,h);
        addActionListener(this);
         }
       public void actionPerformed(ActionEvent ae){
             JFrame Fprincipale = new JFrame("Hello");
             Fprincipale.setSize(100,200);
             String[] intestazione =  {"campo1","campo2","campo3"};
             String[][] records ={
                                          {"questa","e'","una"},
                                          {"questa","e'","una"},
                                          {"prova","prova","prova"}
             };
              JTable tabella = new JTable(records,intestazione);
              JScrollPane scrollpane = new JScrollPane(tabella);
              Fprincipale.add(scrollpane,BorderLayout.CENTER);
              Fprincipale.show();
     }
}
Ora ti posto il codice corretto e perfettamente funzionante, con tanto di
tabella che si carica, e l'Hello che no ti veniva fuori, e ti consiglio di
studiare di più perchè ci sono errori concettuali ciao.
package pressionepulsante;
 import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 class Miobottone extends JButton implements ActionListener{
      public Miobottone (String st,int l, int h){
        super(st);
        setSize(l,h);
        addActionListener(this); //
         }
       public void actionPerformed(ActionEvent ae){
             JFrame Fprincipale = new JFrame("Hello");
             Fprincipale.setSize(100,200);
             String[] intestazione =  {"campo1","campo2","campo3"};
             String[][] records ={
                                          {"questa","e'","una"},
                                          {"questa","e'","una"},
                                          {"prova","prova","prova"}
             };
              JTable tabella = new JTable(records,intestazione);
              JScrollPane scrollpane = new JScrollPane(tabella);
              JPanel pannelc = new JPanel();
              pannelc.add(scrollpane,BorderLayout.CENTER);
              Container contc = Fprincipale.getContentPane();
              contc.add(pannelc);
              Fprincipale.show();
     }
}
PS
Il bottone istanza di Miobottone lo devi creare su un altro pannello di un
altro Frame(ovviamente), ciao altrimenti non ti funziona nulla.
Inoltre in genere l'ascoltatore è il componente che contiene un bottone,
tipo il pannello, però questo non è obbligatorio.

Innanzittutto ti ringrazio, sei l'unico che si è degnato di
rispondermi.
Per quanto riguarda lo studio, è vero che devo studiare di più, però
visto
che hai capito che ci sono errori concettuali, potresti anche
spiegarmeli.
Lo sapevo anch'io che per dare il nome al frame bisogna invocare il
costruttore della superclasse super(String name),
però so anche che la classe JFrame eredita da Component il metodo
public void setName(String name) , che vuol dire ciò ?????????
Il fatto che non riuscivo a creare la tabella era perchè non avevo
creato
l'oggetto container, (grave svista, anche perchè nell'AWT non
occorreva)
però credo che non sia necessario creare il pannello visto che
funziona
ugualmente anche aggiungendo lo scrollpane direttamente al conteiner.
Mi puoi rispondere a questi quesiti? 
Grazie

Sul setName non ho capito qual è il tuo dubbio.
Per quanto riguarda l'altra domanda, sì, al 99% il JPanel non serve.
Tu non vedevi nulla perchè non settavi il ContentPane del frame

Il problema che avevo su
public void setName(String str)
è che non avevo capito che tale metodo serve a settare il nome del
componenete che lo utilizza e non a dare il nome del Frame sulla barra
del titolo (come invece fà il costruttore JFrame(String str)).
JFrame x = new JFrame("Titolo");  // x è l'handler dell'oggetto che ha
                                   come titolo "Titolo"
x.setName("prova"); // prova è il nome dell' oggetto che ha come
                       handler  x
Ora devo però capire a cosa serve dare un nome ad un oggetto quando
per utilizzarlo o richiamarlo si utilizza sempre il suo handler
Inoltre potresti farmi un esempio in cui è necessario utilizzare l'
oggetto JPanel che contenga tutti gli elementi (pulsanti, caselle di
testo ecc.) anzichè aggiungere gli oggetti direttamente nel
contentPane ?
Grazie a tutti per la collaborazione

 ha scritto nel messaggio
news:1130259073....@g43g2000cwa.googlegroups.com...
|Ora devo però capire a cosa serve dare un nome ad un
oggetto quando
|per utilizzarlo o richiamarlo si utilizza sempre il suo
handler
Il nome che aggiungi in qualità di titolo compare
nell'interfaccia utente!
Ma forse ho capito male il tuo dubbio.
|Inoltre potresti farmi un esempio in cui è necessario
utilizzare l'
|oggetto JPanel che contenga tutti gli elementi (pulsanti,
caselle di
|testo ecc.) anzichè aggiungere gli oggetti direttamente nel
|contentPane ?
Be, la grafica, ad esempio, necessita, ma non ne sono certo,
del pannello!


E' un fatto di comodità (e buona programmazione): quasi sempre -
semplificando - un'applicazione swing è un frame che parte ed il cui
contenuto cambia a seconda delle funzioni. Allora, secondo te è più
facile cambiare il contenuto rimuovendo bottoni, combo o altro ed
aggiungendo quelli nuovi al contentPane o rimuovere e aggiungere un
semplice JPanel (magari incapsulato in un JcrollPane)?

Innanzitutto grazie ragazzi per la vostra gentilezza,
per quanto riguarda l'ultilità del pannello, sono d'accordo, và
utilizzato nei programmi in cui si vuole personalizzare il contenuto
del frame a seconda dell'impostazione dinamica di determinati
parametri.
Per quanto riguarda l'utilità di settare il nome dell'oggetto con
setName(), il dubbio rimane anche se penso che anche in questo caso và
utilizzato in programmi inerattivi, non lo sò devo fare delle prove...
grazie mille
Ciao