Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Sony Xperia 1 VII propone un design sobrio e funzionale, con un comparto fotografico di ottimo livello caratterizzato da uno zoom continuo e prestazioni generali da top di gamma puro. Viene proposto con una personalizzazione software sobria e affidabile, ma presenta qualche criticità sul fronte ricarica rapida. Il dispositivo punta su continuità stilistica e miglioramenti mirati, rivolgendosi al solito pubblico specifico del brand giapponese.
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Poco F7 5G, smartphone che punta molto sulle prestazioni grazie al processore Snapdragon 8s Gen 4 e a un display AMOLED da ben 6,83 pollici. La casa cinese mantiene la tradizione della serie F offrendo specifiche tecniche di alto livello a un prezzo competitivo, con una batteria generosissima da 6500 mAh e ricarica rapida a 90W che possono fare la differenza per gli utenti più esigenti.
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-03-2009, 23:49   #1
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
[Java] Problema KeyEvent(Listener), non si attiva!

Partiamo dal codice:
Codice:
package arithmeticExpression.calc;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.JButton;


/**
 * @author malocchio
 */
public class CalcFrame extends JFrame {

    private CalcApp app;
    private JPanel top, bottom;
    private String[][] labels;
    private JButton[][] buttons;
    private JButton clear;
    private JTextField display;
    private CalcListener listener;
    
    public CalcFrame(CalcApp app) {
        if (app != null)
            this.app = app;
        else
            throw new NullPointerException("Oggetto applicazione specificato null");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.listener = new CalcListener();
        this.addKeyListener( listener );
        this.top = new JPanel(); this.bottom = new JPanel();
        this.setLayout(new BorderLayout());
        this.add(top, BorderLayout.NORTH);
        this.add(bottom, BorderLayout.CENTER);
        this.labels = new String[][]
           {{"7",    "8",    "9",    "/"},
            {"4",    "5",    "6",    "*"},
            {"1",    "2",    "3",    "-"},
            {"0",    "+/-",  "=",    "+"}};
        this.buttons = new JButton[labels.length][labels[0].length];
        this.bottom.setLayout( new GridLayout(labels.length, labels[0].length, 3, 3) );
        Font bfont = new Font("Verdana", Font.PLAIN, 16);
        for (int i = 0; i < labels.length; i++) {
            for (int j = 0; j < labels[i].length; j++) {
                this.buttons[i][j] = new JButton( this.labels[i][j] );
                this.buttons[i][j].setFont(bfont);
                this.buttons[i][j].addActionListener( this.listener );
                this.bottom.add(buttons[i][j]);
            }
        }
        this.top.setLayout( new GridLayout(2,1) );
        this.display = new JTextField();
        this.display.setEditable(false);
        this.display.setBackground(Color.WHITE);
        this.display.setFont( new Font("Verdana", Font.PLAIN, 24) );
        this.display.setHorizontalAlignment(JTextField.TRAILING);
        this.display.setText( "Testo di prova 0123456789" );
        this.top.add(this.display, BorderLayout.CENTER);
        this.clear = new JButton("C");
        this.clear.setFont(bfont);
        this.clear.addActionListener( this.listener );
        this.top.add( this.clear );
        
    }
    
    private class CalcListener implements ActionListener, KeyListener {
        
        public void actionPerformed(ActionEvent e) {
            CalcFrame.this.app.commitAction(e.getActionCommand());
        }

        public void keyTyped(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        public void keyPressed(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }

        public void keyReleased(KeyEvent e) {
            throw new UnsupportedOperationException("Not supported yet.");
        }
        
    }
    
}
In rosso le parti più interessanti (a mio avviso). Tralasciando che i metodi key***ed lanciano solo eccezioni, quando lo avvio questi non vengono richiamati alla pressione di un tasto. Punto. Niente di niente.
Faccio notare che ho aggiunto il keylistener direttamente al JFrame, che secondo la mia logica dovrebbe così gestire tutti gli eventi di tastiera che accadono quando il focus è sulla mia finestra. Mi viene il dubbio che usando i JPanel per settare i layout vada a farsi friggere qualcosa...
All'interno della stessa finestra viene usato sempre l'oggetto listener (CalcListener) come ascoltatore sia di tastiera sia di click sui pulsanti. Ho provato una volta a disattivarli per vedere se era un conflitto con questi ma niente è cambiato!

L'applicazione è una semplice calcolatrice. Compilare il sorgente sarebbe inutile perché manca il resto delle classi del progetto di cui fa parte questa Gui. In pratica volevo fare in modo che premendo una cifra sulla tastiera fosse equivalente che usare i Buttons, esattamente come la calc di windows o Gnome.

Grazie a chi mi vorrà aiutare!
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2009, 09:34   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Tre thread di questo Forum sull'uso del KeyListener
[JAVA]Come usare un KeyListener???
[JAVA] assegnare un tasto della tastiera a un JButton
[Java] Problema con label

Non può mancare la fonte per eccellenza, la documentazione della Sun:
How to Write a Key Listener
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 20-03-2009 alle 09:40.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2009, 21:39   #3
malocchio
Senior Member
 
L'Avatar di malocchio
 
Iscritto dal: Feb 2007
Città: Verona
Messaggi: 1060
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Tre thread di questo Forum sull'uso del KeyListener
[JAVA]Come usare un KeyListener???
[JAVA] assegnare un tasto della tastiera a un JButton
[Java] Problema con label

Non può mancare la fonte per eccellenza, la documentazione della Sun:
How to Write a Key Listener
Ti ringrazio e chiedo perdono, non ho fatto una ricerca!
__________________
malocchio è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia Recensione Sony Xperia 1 VII: lo smartphone per ...
Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
OpenAI domina il torneo di scacchi tra i...
Asta da record per la McLaren F1 pi&ugra...
Addio caricabatterie? Redmi starebbe lav...
Super taglio di prezzo per la TV Mini-LE...
Secure Boot e TPM 2.0 obbligatori per gi...
Apple rilascia la seconda beta pubblica ...
Zucchetti acquisisce il 100% di AWMS
WhatsApp, nuova campagna di attacchi inf...
iPhone 16 Pro a 999€ ed è boom di...
Prezzi bassissimi per i Galaxy Watch 7: ...
Smartwatch Amazfit quasi regalati e arri...
Il telescopio spaziale Hubble ha cattura...
Vacanze in Italia tra giugno e luglio? I...
Lavoro e AI secondo Bill Gates: professi...
Batosta Toyota: vendite record ma profit...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v