Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    jpanel a scomparsa con pulsanti

    salve a tutti, espongo velocemente il mio problema

    sto creando una piccola chat in java con tanto di supporto per le emoticon..per il momento vengono inserite nel testo tramite scorciatoie, ma ora vorrei inserirle in un pannello e renderle cliccabili così come avviene in tutti gli instant messenger..il pannello con le faccine dovrà essere visualizzato alla pressione di un jbutton e nascosto se premuto nuovamente...che componente mi consigliate di usare?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: jpanel a scomparsa con pulsanti

    Originariamente inviato da Slifer87
    salve a tutti, espongo velocemente il mio problema

    sto creando una piccola chat in java con tanto di supporto per le emoticon..per il momento vengono inserite nel testo tramite scorciatoie, ma ora vorrei inserirle in un pannello e renderle cliccabili così come avviene in tutti gli instant messenger..il pannello con le faccine dovrà essere visualizzato alla pressione di un jbutton e nascosto se premuto nuovamente...che componente mi consigliate di usare?
    Potrebbe andare bene un JPanel con un GridLayout che contiene una griglia di JButton ognuno con un Icon (ImageIcon) del emoticon.
    Non è ovviamente l'unica soluzione!

    Per la questione del nascondere/visualizzare, bisogna vedere dove e se in quale layout manager sarà inserito questo pannello.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Io ti consiglierei di utilizzare un JToggleButton.
    E' un bottone che si può trovare in due stati: premuto e rilasciato.
    Quando è premuto appare la finestra con le info che vuoi, quando è rilasciato la finestra scompare.

    Il bottone ha un ascoltatore per il cambio dello stato itemStateChanged che puoi usare in questo modo:

    codice:
    public void itemStateChanged(itemEvent e)
    {
          int status = e.getStateChange();
          if(status == SELECTED)
                   //apri finestra
          else
                   //chiudi finestra
    }

    Spero di essere stato chiaro.
    Ciauz
    Ivan Hares

  4. #4
    allora..la gui della chat consiste in una classe che estende jpanel..al jpanel aggiungo le aree di testo per visualizzare e inviare i messaggi e il suddetto jbutton che dovrebbe aprire/chiudere il pannello con le smiles..il layout l'ho settato a null perchè ho usato il posizionamento assoluto..

    ho gia provato con un jpanel ma usando il metodo setVisible() quando clicco sul jbutton non succede nulla :master:

  5. #5
    Originariamente inviato da IvanHares
    Io ti consiglierei di utilizzare un JToggleButton.
    jtogglebutton o semplice jbutton fanno lo stesso grazie..
    il problema sta nel mostrare/nascondere il nuovo pannello che dovrà quindi sovrapporsi agli altri elementi della gui..tutto questo sempre all'interno dello stesso frame ovviamente

  6. #6
    Mi giunge nuova un JPanel.setVisible(true)!

    Il metodo setVisible se non sbaglio è solo per i toplevel container quindi per il JFrame per esempio!

    Per un JPanel occorre il metodo repaint() che ridisegna il pannello che stai utilizzando.
    1) in questo caso devi istanziare una zona per il pannello nello stesso JFrame;
    oppure
    2) utilizzi una nuova finestra JFrame con un nuovo JPanel oppure un JOptionalPane con un gridLayout.

    Nel primo caso dovrai usare il metodo repaint per ridisegnare la finestra;
    nel secondo utilizzerai il metodo setVisible per far apparire e scomparire la nuova finestra.
    Ivan Hares

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Slifer87
    che dovrà quindi sovrapporsi agli altri elementi della gui..
    Quando si parla di "sovrapposizione" bisogna stare molto molto attenti. Perché nei contenitori "normali" lo z-order (cioè l'ordine "davanti"/"dietro") dipende generalmente solo dall'ordine in cui i componenti sono stati aggiunti nel contenitore!!!

    C'è un componente speciale, JLayeredPane che gestisce appropriatamente lo z-order, permettendo anche di spostare i componenti da un layer ad un altro.
    E nota che un JFrame ha già un JLayeredPane .... il content pane di fatto è solo uno strato del layered pane che è contenuto nel root pane (il quale contiene anche il glass pane oltre al layered pane).

    Queste sono cose abbastanza particolari e "avanzate" .... e se vuoi saperne di più, il tutorial della Sun le spiega.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    grazie per i consigli...alla fine son riuscito a risolvere usando un jlayeredpane per il pannello a scomparsa e lasciando inalterato il resto della gui...funziona a meraviglia


    ps. setVisible() funziona con tutte le jcomponent!! uso proprio quello per mostrare/nascondere il pannello con le emoticon

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 © 2025 vBulletin Solutions, Inc. All rights reserved.