Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto
Lo chassis in Ceraluminium è il cuore di questo notebook in edizione 2026, un modello pensato per garantire produttività con le tipiche applicazioni di produttività personale e capace di offrire un'autonomia di funzionamento lontano dalla presa di corrente da riferimento. Potenza, facilità di trasporto e costruzione robusta tutto in un notebook compatto.
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare
MSI PRO MAX 341QPXW14G è un monitor ultrawide da 34 pollici che porta la tecnologia QD-OLED di quinta generazione in un contesto principalmente orientato alla produttività. La qualità dell'immagine è elevatissima, il formato 21:9 è ideale per il multitasking e la dotazione di porte trasforma il monitor in un vero hub per Mac, PC e dispositivi mobili. Il limite principale è invece il refresh rate di soli 144 Hz, che lo allontana dai giocatori competitivi più esigenti
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
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


ASUS Zenbook 14 (UX3480AA): tanta autonomia con uno chassis bello e robusto ASUS Zenbook 14 (UX3480AA): tanta autonomia con ...
MSI PRO MAX: QD-OLED ultrawide per lavorare, creare e giocare MSI PRO MAX: QD-OLED ultrawide per lavorare, cre...
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...
Confidential Computing, Intel concentra ...
Con l'IA, sono i candidati a fare il col...
Orologi nucleari al torio: i primi due p...
L'auto più venduta di Volkswagen ...
OneDrive, addio ai 6 TB su Microsoft 365...
I cinesi si sono già infiltrati i...
Amazon Leo si prepara a sfidare Elon Mus...
HONOR CHOICE ADO Air 20 Pro arriva in It...
D-PACK LAB, nasce a Bologna la fabbrica ...
Anthropic regala Mythos, la sua migliore...
Nucleare spaziale: NASA e DOE firmano l'...
Intel Raptor Lake NEXT, GIGABYTE è...
HP OmniBook 5 e ProBook 4: specifiche te...
Google riabilita JPEG XL su Chrome dopo ...
OpenAI, ricavi annualizzati a 50 miliard...
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: 01:26.


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