Visualizzazione dei risultati da 1 a 7 su 7

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    Si volevo essere coincisa ma effettivamente hai ragione Devo fare la tastiera di un piano, e i tasti neri devono ovviamente rimanere in primo piano

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da tr_gal Visualizza il messaggio
    Devo fare la tastiera di un piano, e i tasti neri devono ovviamente rimanere in primo piano
    Ok, chiaro (e sensato)

    Quote Originariamente inviata da tr_gal Visualizza il messaggio
    mentre ora se passo con il mouse su quelli del livello inferiore, di default, me li porta al livello superiore
    Questo succede per via una ottimizzazione sul painting. Tutti i componenti Swing, a partire da JComponent, hanno il metodo:

    public boolean isOptimizedDrawingEnabled()

    Se un componente fa restituire da questo metodo un true, vuole indicare che i suoi componenti contenuti NON si sovrapporranno e questo rende più efficiente il painting. Questo è lo scenario tipico/normale. E tra l'altro quello applicato dai principali layout manager (es. BorderLayout, FlowLayout ecc..) in cui i componenti di fatto non si possono sovrapporre.

    JLayeredPane invece fa restituire false, perché è fatto apposta per stratificare componenti. Se vuoi usare un normale JPanel, puoi usarlo, basta che lo estendi e ridefinisci isOptimizedDrawingEnabled per restituire false. A quel punto non avverrà più il difetto che hai descritto.

    E infine basta solo che ti ricordi che il primo componente aggiunto in un contenitore è quello che sta tecnicamente più sopra (z-order 0) e l'ultimo aggiunto quello più in fondo (z-order N).


    Come alternative:
    1) Appunto un JLayeredPane
    2) Uso del custom painting per disegnare in modo arbitrario la tastiera (con immagini, primitive di disegno, ecc..) e chiaramente con un po' tutto da gestire riguardo eventi ecc... Questa è una soluzione ben più complessa.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    29
    Perfetto ora funziona tutto, mi hai chiarito molto le idee, grazie mille!! Proverò anche con il custom painting

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.