Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-03-2009, 00: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, 10: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 10:40.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 20-03-2009, 22: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


Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
'Se avete RAM, siamo pronti ad acquistar...
Veeam corregge diverse vulnerabilit&agra...
MacBook Neo segna una svolta per Apple: ...
Polestar pubblica il report LCA di Poles...
Il rame non basta più: NVIDIA, AM...
Velocissimo e consuma poco: ecco il nuov...
Le migliori Offerte di Primavera sui Rob...
Perplexity 'Personal Computer' è ...
TV QLED da 65 pollici da 449€ con sconti...
Il CEO di Adobe pronto a lasciare dopo q...
Non è bastato il maxi-accordo col...
Gestire e proteggere i backup è s...
AI in mezzo all'oceano: turbine eoliche ...
IDC rivede le stime del mercato PC: crol...
Microsoft 365 Family 12 mesi a 89,99€ pe...
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: 14:07.


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