PDA

Visualizza la versione completa : [JAVA] problemino JLabel


Wave
04-05-2004, 09:27
private void VirgolaMouseClicked(java.awt.event.MouseEvent evt) {

if (premuto = false && operatore == 0){
input1 = input1 + ".";
schermo.setText(input1);
premuto = true;
return;
}
else if (premuto = false && operatore != 0){
input2 = input2 + ".";
schermo.setText(input2);
premuto = true;
return;



questo è un metodo che dovrebbe permettermi in una calcolatrice di aggiungere il punto a significare la virgola di un numero decimale...

la variabile booleana premuto è inizializzzata a false e indica se il tasto è stato premuto o meno...

operatore invece indica se è stato premuto un pulsante che corrisponde ad un operazione (+ - * / ) [ quando è 0 vuol dire che non ne è stato premuto nessuno ] in modo da aggiornare input1 nel primo caso e input2 nel secondo caso (che corrispondono al primo e al secondo membro dell'operazione....

il fatto è che la compilazione non mi genera nessun errore ma in esecuzione il tasto è come se non ci fosse...se lo premo non succede niente e tutto continua come se non lo avessi premuto...neanche errori nel promt....non vorrei che il punto non possa apparire in una JLabel (è così che faccio vedere le cose premute sulla calcolatrice) ma se così fosse mi dovrebbero apparire degli errori che invece non appaiono.....

non so che fare...non ho indizi da cui iniziare a cercare una soluzione...



e poi un altro problemino...ho lanciato questi metodi sulla JLabel schermo:



schermo.setBackground(new java.awt.Color(255, 255, 255));
schermo.setText(" ");
schermo.setBorder(new javax.swing.border.EtchedBorder());
schermo.setHorizontalTextPosition(javax.swing.Swin gConstants.RIGHT);


che dovrebbero farmi lo sfondo di essa bianco....e scrivere il testo a partire da destra....ma così non è...come mai????

Wave
04-05-2004, 10:58
niente quella cavolo di virgola proprio non vuole apparire....

LeleFT
04-05-2004, 11:17
A parte il fatto che le due istruzioni return all'interno del metodo VirgolaMouseClicked sono perfettamente inutili e, oltretutto, semanticamente errate (un metodo void per definizione non ritorna nulla), non capisco come entri nel metodo. Hai associato un ActionListener nel pulsante con la virgola? Lo richiami da lì? :confused:

Per il secondo problema, se vuoi lo sfondo bianco, devi impostare anche un'altra proprietà delle JLabel (che non è ben documentata). Basta che aggiungi questa riga:


schermo.setOpaque(true);



Ciao. :ciauz:

Wave
04-05-2004, 11:22
per lo sfondo...grazie adesso lo provo.....

per quanto riguarda il primo problemino...il return lo so che è inutile ma dato che non funzionava ho provato a metterlo.....così...


ho aggiunto questo per il pulsante con la virgola...



Virgola.setText(".");
Virgola.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
VirgolaMouseClicked(evt);
}
});

Tastiera.add(Virgola);



dovrebbe essere giusto.....

Wave
04-05-2004, 11:25
ah...e per quanto riguarda il testo che voglio appaia a destra????anche qui c è un opzione da attivare oltre a schermo.setHorizontalTextPosition(javax.swing.Swin gConstants.RIGHT);????

LeleFT
04-05-2004, 11:29
Originariamente inviato da Wave
ah...e per quanto riguarda il testo che voglio appaia a destra????anche qui c è un opzione da attivare oltre a schermo.setHorizontalTextPosition(javax.swing.Swin gConstants.RIGHT);????

Mi sa che il metodo da usare è un altro:


schermo.setHorizontalAlignment(JLabel.RIGHT);


Per l'altro problema, ci lavoro un po' su... devo vedere dov'è il problema..


Ciao. :ciauz:

Wave
04-05-2004, 11:32
mi sento in colpa se adesso ti metti a lavorare per risolvere il problema.....grazie di tutto... :smack:

LeleFT
04-05-2004, 11:32
Originariamente inviato da Wave



private void VirgolaMouseClicked(java.awt.event.MouseEvent evt) {

if (premuto = false && operatore == 0){
input1 = input1 + ".";
schermo.setText(input1);
premuto = true;
return;
}
else if (premuto = false && operatore != 0){
input2 = input2 + ".";
schermo.setText(input2);
premuto = true;
return;



Spero vivamente che quanto tu hai scritto qui sia diverso da quello che hai scritto nel codice, altrimenti il motivo è semplice (anche se sfugge): il confronto si fa con == non con =!! Nel tuo caso, poi, puoi completamente evitare il confronto: una variabile booleana rappresenta già di suo una espressione booleana: perchè confrontare un true con un altro true o con un false se si conosce già il suo valore?


private void VirgolaMouseClicked(java.awt.event.MouseEvent evt) {

if (!premuto && operatore == 0){
input1 = input1 + ".";
schermo.setText(input1);
premuto = true;
return;
}
else if (!premuto && operatore != 0){
input2 = input2 + ".";
schermo.setText(input2);
premuto = true;
return;


Ciao. :ciauz:

Wave
04-05-2004, 11:42
Originariamente inviato da LeleFT
Spero vivamente che quanto tu hai scritto qui sia diverso da quello che hai scritto nel codice, altrimenti il motivo è semplice (anche se sfugge): il confronto si fa con == non con =!! Nel tuo caso, poi, puoi completamente evitare il confronto: una variabile booleana rappresenta già di suo una espressione booleana: perchè confrontare un true con un altro true o con un false se si conosce già il suo valore?


private void VirgolaMouseClicked(java.awt.event.MouseEvent evt) {

if (!premuto && operatore == 0){
input1 = input1 + ".";
schermo.setText(input1);
premuto = true;
return;
}
else if (!premuto && operatore != 0){
input2 = input2 + ".";
schermo.setText(input2);
premuto = true;
return;


Ciao. :ciauz:


madonna mia che stupido....praticamente ogni volta gli dicevo di metterlo uguale a false e non eseguiva il blocco di istruzioni.....che vergogna........ :jam:

cmq sia grazie per l'aiuto... :smack:

LeleFT
04-05-2004, 11:47
Prego... non hai idea di quante volte ci sono cascato io quando ero alle prime armi con C e Java, provenendo dal Pascal e dal QBasic!! :gren:


Ciao. :ciauz:

Loading