Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura
Il primo Micro RGB di Samsung per il salotto è il 65 pollici da 2.749 euro. Sul banco di misura abbiamo rilevato 2.000 nit di picco, nero assoluto con il local dimming e il 91,4% del BT.2020, il colore più ampio che abbiamo misurato su un LCD
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-10-2009, 23:15   #1
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
[Java] componente AWT dentro interfaccia Swing

salve a tutti.

i problemi di interoperabilitá tra AWT e Swing sono ben noti e non li sto neanche a riassumere, peró io vorrei (se é fattibile in maniera agevole) inserire un componente AWT dentro un'interfaccia grafica basata su Swing; il mio JFrame ha un BorderLayout e contiene la JMenuBar, una JToolbar installata in BorderLayout.NORTH e (semplificando un po') questo componente AWT installato in BorderLayout.CENTER.

ora chiaramente (chiaramente per chi conosce il problema) quando apro i menu, che sono dei JMenu, questi vengono nascosti dal componente AWT e ne resta visibile solo la parte che sta non sopra il componente AWT ma sopra la JToolbar; peró ho scoperto che se stacco la JToolbar e la lascio floating Swing si rende conto che c'é un'altra finestra nativa (per forza perché la JToolbar floating deve poter uscire dal JFrame) e quindi per riuscire ad essere autocoerente si trova costretto a mostrare i JMenu in finestre native separate, e quindi in quel caso i JMenu stanno sopra al componente AWT e si vedono bene. in tutto ció il componente AWT é un Canvas.

ora mi chiedevo: per fare un workaround é possibile in qualche modo dire a Swing di aprire i JMenu sempre in finestre native separate, non solo quando la JToolbar é floating?

anticipatamente grazie!
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2009, 10:29   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da fero86 Guarda i messaggi
ora mi chiedevo: per fare un workaround é possibile in qualche modo dire a Swing di aprire i JMenu sempre in finestre native separate, non solo quando la JToolbar é floating?
Sì, JMenu ha un metodo che si chiama getPopupMenu() che restituisce il JPopupMenu associato al JMenu stesso: JPopupMenu ha una property, lightWeightPopupEnabled, che di default è impostata a true e indica al L&F di utilizzare un popup lightweigth.
Se la imposti a false forzi l'utilizzo del popoup heavyweight.

Commentando la riga in grassetto mi ritrovo nella tua situazione:
Codice:
public class PopupAWTMenu extends JFrame
{
    public static void main(String[] args)
    {
        PopupAWTMenu frame = new PopupAWTMenu("Menu over AWT component");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setSize(500,400);
        frame.setVisible(true);
    }

    public PopupAWTMenu(String title) {
        super(title);
        initialize();
    }

    private void initialize() {
        JMenuBar menu = new JMenuBar();
            JMenu fileMenu = new JMenu("File");
                JMenuItem fileItem1 = new JMenuItem("Item1");
                JMenuItem fileItem2 = new JMenuItem("Item2");
                fileMenu.add(fileItem1);
                fileMenu.add(fileItem2);
                fileMenu.getPopupMenu().setLightWeightPopupEnabled(false);
            menu.add(fileMenu);
        setJMenuBar(menu);
        //
        JToolBar toolbar = new JToolBar();
            toolbar.add(new AbstractAction("Foo"){public void actionPerformed(ActionEvent e){}});
            toolbar.add(new AbstractAction("Boo"){public void actionPerformed(ActionEvent e){}});
            toolbar.add(new AbstractAction("Poo"){public void actionPerformed(ActionEvent e){}});
        add(toolbar, BorderLayout.NORTH);
        //
        Panel awtPanel = new Panel();
        add(awtPanel, BorderLayout.CENTER);
    }
}

@EDIT:
Mi è venuto in mente che esiste anche una property defaultLightWeightPopupEnabled [true/false] che dice al L&F quale è il valore di default per determinare se usare popup lightweight o heavyweight.

Ti basta settare questa a false prima di costruire i tuoi menu.
Codice:
public class PopupAWTMenu extends JFrame
{
    public static void main(String[] args)
    {
        JPopupMenu.setDefaultLightWeightPopupEnabled(false);
        
        PopupAWTMenu frame = new PopupAWTMenu("Menu over AWT component");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setSize(500,400);
        frame.setVisible(true);
    }
ecc...
__________________

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 : 23-10-2009 alle 16:12.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2009, 16:38   #3
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
aaaaaahhhh, grazie!!! é precisamente quello che cercavo!
ora lo provo e ti dico.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2009, 16:40   #4
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
funziona che é una meraviglia
grazie ancora!
fero86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Micro RGB R95H, il primo LCD a LED rossi, verdi e blu di Samsung alla prova del banco di misura Samsung Micro RGB R95H, il primo LCD a LED rossi...
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Ora solare tutto l'anno: per la scienza ...
Skydance unirà HBO Max, Paramount...
Deep Tech Revolution: dieci startup e un...
Il telescopio James Webb svela le stelle...
Prime Day, tutte le scope elettriche in ...
Perseverance trova tracce di almeno tre ...
Una tastiera su nastri trasportatori: la...
L’IA entra nella fase operativa: per SDG...
Apple accusa OpenAI: nuovi argomenti imp...
Blue Origin presenta Power Tower, la tor...
Speciale Smart TV sotto i 200€: TCL QLED...
Ricarica wireless senza cavi per gli aut...
Docking station Techly per SSD NVMe e SA...
E-bike Prime Day da 616€: HillMiles e HI...
Nano Banana 2.1 dimezza il prezzo dei to...
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: 10:44.


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