Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte
Abbiamo provato le nuove CPU Intel Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: più core e ottimizzazioni al funzionamento interno migliorano le prestazioni, anche in virtù di prezzi annunciati interessanti. A questo si aggiungono nuove ottimizzazioni software. Purtroppo, a fronte di prestazioni di calcolo elevate, il quadro rimane incerto nel gaming, dove l'andamento rimane altalenante. Infine, rimane il problema della piattaforma a fine vita.
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu
Il modello "build to order" di PCSpecialist permette di selezionare una struttura base per un sistema, personalizzandolo in base alle specifiche esigenze con una notevole flessibilità di scelta tra i componenti. Il modello Lafité 14 AI AMD è un classico notebook clamshell compatto e potente, capace di assicurare una elevata autonomia di funzionamento anche lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-03-2007, 10:58   #1
rayman2
Senior Member
 
Iscritto dal: Jan 2002
Messaggi: 437
[Java] Swing: menu contestuale con tasto destro su JTable

Ciao a tutti,
sto facendo una micro applicazione Java basata su swing (come accennato anche in un post precedente).
La finestra principale ha un JMenu e subito sotto una JTable.
Quello che vorrei ottenere è che cliccando col tasto destro su di una riga della tabella venga selezionata la riga e mostrato un menu contestuale per compiere delle azioni riguardanti quella riga di tabella (inserimento, cancellazione, refresh, apertura nel browser del link associato).
Ho creato un JPopupMenu e associato alla JTable un listener dell'evento MouseEvent che rende visibile il JPopupMenu. Ecco degli stralci del codice:

Codice:
table.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                tableMouseReleased(evt);
            }
        });
Codice:
 private void tableMouseReleased(java.awt.event.MouseEvent evt) {                                    
        rightClickMenu.setLocation(evt.getX() + this.getX() + 20, evt.getY() + this.getY() + 70);
        rightClickMenu.setVisible(true);
    }
Come potrete notare i problemi che ho sono principalmente due: il menu appare sia cliccando col tasto destro che con quello sinistro, inoltre cliccando col destro non seleziona la riga; il secondo è che il menu non appare esattamente nel punto in cui si trova il mouse in quel momento.
Per il primo problema non so proprio come cavarmela: si può evolvere la mia idea o devo pensare a qualcosa di diverso?
Per il secondo come vedete ho pensato di posizionare il menu in base alla somma di coordinate dei singoli componenti ma anche così non si posizionava dove volevo io. Ho quindi dovuto aggiungere dei valori, 20 e 70, per aggiustare ad hoc la posizione. Ho forse dimenticato nel conteggio qualche componente o "va bene così"? Il dubbio è che i valori trovati empiricamente sul mio PC possano sballare in altre configurazioni della finestra.

Grazie dell'aiuto!
rayman2 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2007, 11:07   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
JPopupMenu ha un metodo, show, che richiede come primo argomento il componente che genera l'evento del mouse e come secondo e terzo le coordinate (x, y) del punto in cui si è fatto click. Del genere:

Component source = mouseEvent.getComponent();
popup.show(source, e.getX(), e.getY());

Per selezionare la riga sulla tabella è sufficiente trasformare il punto di pressione in un indice di riga. Se guardi nella documentazione di JTable c'è un esempio già pronto che tratta di questa trasformazione.

Per controllare quale pulsante è stato premuto e poi decidere se attivare o meno il popup il modo più sintetico è usare SwingUtilities. Ad esempio:

Codice:
if(SwingUtilities.isRightMouseButton(mouseEvent)) {
    //pulsante destro
}
Più in generale, la questione pulsante destro/sinistro è documentata in InputEvent.getModifiersEx()
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2007, 11:42   #3
rayman2
Senior Member
 
Iscritto dal: Jan 2002
Messaggi: 437
Tutto perfetto, grazie mille!
rayman2 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2007, 11:49   #4
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Oppure:
Codice:
	@Override public void mousePressed(MouseEvent e)
	{
		if( e.isPopupTrigger() )
			{ ... }
lovaz è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Recensione Nothing Phone 4(a): sempre iconico ma ora più concreto Recensione Nothing Phone 4(a): sempre iconico ma...
Corsair Vanguard Air 99 Wireless: non si era mai vista una tastiera gaming così professionale Corsair Vanguard Air 99 Wireless: non si era mai...
La NASA dimostrerà l'utilizzo del...
L'ESA acquisterà una missione Cre...
La NASA cambia idea sulle stazioni spazi...
Implementazione NVMe nativa disattivata ...
Polestar 2 e 3: le batterie integrano or...
Crisi delle memorie: ecco le soluzioni p...
Il satellite ESA Proba-3 è tornat...
'Chiudete (quasi) tutto', il risultato d...
Tesla, maggiore autonomia grazie a una r...
Nasce TrendAI, la divisione di Trend Mic...
Recensione Motorola Signature: il primo ...
TeraFab, Elon Musk parte all'assalto di ...
L'ambiziosa base lunare permanente sulla...
Litografia BEUV (Beyond-EUV): la startup...
SAP e l'IA agentica: dall'hype alla matu...
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: 22:00.


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