PDA

View Full Version : Sintassi Java


Bahamut Zero
15-01-2004, 20:39
Ragazzi dove posso trovare la sintassi dei + comuni metodi di Java?

X esempio a me ora servirebbe quella del Click su un jButton ma non la trovo.

Sono andato anche nel sito di SUN ma non ho cavato un ragno dal buco :(

Dov'è questa fantomatica documentazione? :p

bizzu
15-01-2004, 20:58
Non è la sintassi quella che cerchi, ma semplicemente la documentazione... che è qua (http://java.sun.com/j2se/1.4.2/docs/index.html) :p

Bahamut Zero
15-01-2004, 23:46
come si fa a linkare un jButton che apra un'altro frame non riesco a trovarlo sulla documentazione :confused:

PGI
16-01-2004, 00:12
supercondensato dell'interfaccia ActionListener:

bottone1 è il tuo JButton, frame2 è il tuo JFrame da "aprire".


import java.awt.event.*;
...

public class Applicazione {
private JFrame frame2;

public Applicazione() {
bottone1 = new JButton(...)
bottone1.addActionListener(new Bottone1Listener());
...
frame2 = new JFrame();
...ecc...ecc...
}

...

private class Bottone1Listener implements ActionListener {
public void actionPerformed(ActionEvent a) {
frame2.show();
}
}

}


Poichè la cosa è fattibile in un'infinità di altri modi, dovresti prima provare, in un'applicazione a parte, a gestire un evento generato da un bottone.

Siamo a disposizione per ogni chiarimento :).

Ciao.

Passy
21-01-2004, 13:19
Se vuoi solo la sintassi ho fatto questo promemoria...

http://www.zresa.it/java_key/


Spero che ti serva

Ciao

Bahamut Zero
26-01-2004, 15:34
Ragazzi io x dire ad un jButton di aprire un nuovo jFrame ho fatto così

void jButton1_actionPerformed(java.awt.event.ActionEvent evt) {

javax.swing.JFrame frame2 = new javax.swing.JFrame("TITOLO");
frame2.setLocation(313,228);
frame2.show();
}

Solamente è un casino x la location andare a trovare glis tessi pixel del frame1!

Ora funziona apre un nuovo jFrame solo che apre 1/3 della abrra del titolo!
Come posso fare x sovrappore al frame1 un frame2 delle stesse dimensioni?

Spero di essermi spiegato :)

cn73
26-01-2004, 15:53
Bhè come esiste il metodo setLocation esiste anche il getLocation() :rolleyes:

Cmq è davvero bruttino dare i valori così direttamente, anche perchè il risultato visivo cambia in base alla risoluzione corrente dellos chermo (non devi ragionare con il tuo schermo, ma in generale)... un metodo simpatico che centra la finestra rispetto allo schermo potrebbe essere :

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = frame.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
frame.setVisible(true);

Menandro
26-01-2004, 19:51
Per centrare un JFrame (o qualunque classe che estende Window) su schermo basta usare il metodo
setLocationRelativeTo(null);

Menandro
26-01-2004, 19:56
Devi aggiungere un setSize(int,int) per definire le
dimensioni del tuo frame.

Per far apparire il frame2 sopra il frame1 devi provare ad usare
il metodo setLocationRelativeTo(Component c)

Ciao


Ora funziona apre un nuovo jFrame solo che apre 1/3 della abrra del titolo!
Come posso fare x sovrappore al frame1 un frame2 delle stesse dimensioni?

Spero di essermi spiegato :)

Bahamut Zero
27-01-2004, 10:51
ragazzi allora il codice che ho scritto è cosi

void jButton1_actionPerformed(java.awt.event.ActionEvent evt) {

javax.swing.JFrame frame2 = new javax.swing.JFrame("TITOLO");
frame2.setLocationRelativeTo(null);
frame2.show();
}

cosi riesco ad aprire il frame centrato sullo schermo!

Io ora vorrei che questo jButton1 aprisse il frame TITOLO.JAVA

Come diavolo si fà? :muro:

Scusate ma sono proprio un nubbio su Java e giovedi devo consegnare un progetto all'uni in Java in un corso che non centra nulla con sto linguaggio :mc:

anx721
27-01-2004, 14:19
[B]
Io ora vorrei che questo jButton1 aprisse il frame TITOLO.JAVA

Come diavolo si fà? :muro:


Che intendi dire? I frame si aprono sempre allo stesso modo, cosa indichi quando dici "il frame TITOLO.JAVA"??? Se vuoi solo cambiare il titolo della arra del frame devi solo passare il titolo che vuoi nel costruttore,

ciao.

Bahamut Zero
27-01-2004, 15:24
hp usato jBulder e ho creato vari jFrame!

TITOLO.JAVA
GENERE.JAVA
REGISTA.JAVA
ecc...

se non si è capito sto facendo il progetto di una videoteca! :)

Ora sono nel frame1.java e ho vari jButton che devono linkare quei frame già fatti che ho scritto sopra!

Come si fa?Che significa costruttore?

Ragazzi vi ripeto Java non lo conosco ma mi tocca farlo in questo linguaggio quindi non è x cattiveria ma se volete parlare tecnico non postate :rolleyes:

cn73
27-01-2004, 16:09
Originariamente inviato da Menandro
Per centrare un JFrame (o qualunque classe che estende Window) su schermo basta usare il metodo
setLocationRelativeTo(null);

Ci puoi dire da che versione di java la classe Windows ha questo metodo? Esiste solo dalla versione 1.4 ed è meglio non realizzare codice che non è retrocompatibile almeno con una versione precedente...Se il prof lo fa girare anche solo con una 1.3 sai che bello vedersi un bel "No such Method"...

cn73
27-01-2004, 16:15
Originariamente inviato da Bahamut Zero
hp usato jBulder e ho creato vari jFrame!

TITOLO.JAVA
GENERE.JAVA
REGISTA.JAVA
ecc...

se non si è capito sto facendo il progetto di una videoteca! :)

Ora sono nel frame1.java e ho vari jButton che devono linkare quei frame già fatti che ho scritto sopra!

Come si fa?Che significa costruttore?

Ragazzi vi ripeto Java non lo conosco ma mi tocca farlo in questo linguaggio quindi non è x cattiveria ma se volete parlare tecnico non postate :rolleyes:

Comunque davvero non si è capito che cosa vuoi sapere...
Mi pare di capire che da questo frame principale tu hai 3 bottoni denominati Genere, Artista e Titolo, premendo ognuno dei quali ti si deve aprire un altro frame...giusto??

Allora a ognuno di questi bottoni associ un listener, proprio come hai fatto per aprire il primo Frame... Meglio se istanzi dei JInternalFrame, dovendo essere tutti contenuti in un frame principale...

Menandro
27-01-2004, 18:52
Originariamente inviato da cn73
Ci puoi dire da che versione di java la classe Windows ha questo metodo? Esiste solo dalla versione 1.4 ed è meglio non realizzare codice che non è retrocompatibile almeno con una versione precedente...Se il prof lo fa girare anche solo con una 1.3 sai che bello vedersi un bel "No such Method"...


Attualmente uso la 1.4...
mi sembrava la maniera più semplice per dirgli come
centrare un frame... non ho pensato alla retrocompatibilità
visto che si tratta di un progetto scolastico...

cn73
28-01-2004, 09:11
Però hai assunto che nella sua scuola usassero la 1.4. E questo era tutto da verificare. Il metodo generale da me indicato, oltre ad essere istruttivo, funziona dalla 1.1.6 in poi...

Bahamut Zero
28-01-2004, 09:15
ho risolto....

il problema è che i frame a cui volevo collegarmi erano in jInternalFrame e non in jFrame!

Un amico mi ha fatto notare l'errore anche se non ho capito perchè era sbagliato :rolleyes:

Cmq......ora il nuovo problema è che ho una jList con un elenco di nomi di film!

Che metodo poteri usare x cliccare sul nome del film e far uscire un'immagine dello stesso?Tipo locandina.....

Ciao tnk :)

cn73
28-01-2004, 09:53
Allora, innanzitutto riferisciti alle specifiche delle API: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JList.html

Poi leggiti: Advanced JList Programming (http://java.sun.com/products/jfc/tsc/tech_topics/jlist_1/jlist.html)

Fatto questo ciò che ti serve è di aggiungere un ascoltatore di evnti sul cambio di selezione della lista e ottenere l'elemento selezionato:


ListSelectionListener listSelectionListener = new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {

if (!lista.isSelectionEmpty() ){
elementoCorrente= lista.getSelectedValue();
// fai qualcosa sull'elemeto corrente
}
else
{
System.out.println("Rimossa selezione");
}
}
};

lista.addListSelectionListener(listSelectionListener);

Puoi anche aggiungere dei MouseListener, per esempio:


MouseListener mouseListener = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int index = lista.locationToIndex(e.getPoint());
if (e.getClickCount() == 1 ){
System.out.println("one click on item " + index);
if (index == -1)
....
}
else if (e.getClickCount() == 2 && SwingUtilities.isLeftMouseButton(e)) {
System.out.println("Double clicked on Item " + index );
if (index != -1){
try{
...

}catch(Exception ioe){
JOptionPane.showMessageDialog(AllegatiNuovoPanel.this,"Errore nell'apertura dell'applicazione...","Attenzione...", JOptionPane.ERROR_MESSAGE);
ioe.printStackTrace();
}
}
else {
....

}
}
}
};
lista.addMouseListener(mouseListener);

Menandro
28-01-2004, 19:53
Originariamente inviato da cn73
Però hai assunto che nella sua scuola usassero la 1.4. E questo era tutto da verificare. Il metodo generale da me indicato, oltre ad essere istruttivo, funziona dalla 1.1.6 in poi...

Semplicemente non ci ho pensato... sorry :(

cn73
29-01-2004, 08:53
Ci mancherebbe, però ti spiego la mia reazione... Avevo scritto una 20ina di righe di codice per fare una cosa, poi arrivi tu il post dopo e con tono sicuro afferrmi che la stessa cosa si può fare in maniera molto più semplice con una sola riga ed usando un solo metodo. Io programmo con la 1.2 e se quel metodo fosse esistito me ne sarei accorto fidati :D. FRa l'altro sono sicuro che quel nuovo metodo è implementato proprio col codice da me riportato ;)
Ciaoz!