Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Inserire "menu" in una JToolBar

    'sera, avrei bisogno di una mano con una JToolBar. Praticamente dovrei inserire una menu a cascata in una toolbar ma non so come fare.. Intendo una cosa simile a quella nella toolbar di questa immagine:

    (secondo bottone da sinistra)



    Come si può fare? Ho provato col popup menu ma l'effetto è sgradevole in quanto il menu appare dove si clicca e non appena sotto il bottone...


    Grazie
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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

    Re: Inserire "menu" in una JToolBar

    Originariamente inviato da Alex'87
    Come si può fare?
    A parte il fatto, scusa, che non è ben chiaro quale è il problema/dubbio tecnico che devi risolvere. Il tuo problema è come mettere un menù in una toolbar? O come fare dei sottomenù? O altro?

    Comunque un JMenu contiene dei JMenuItem. Un JMenuItem può anche essere un JCheckBoxMenuItem, JRadioButtonMenuItem oppure a sua volta un JMenu. Quindi se vuoi fare dei sotto-menù, basta che come item metti un JMenu che avrà a sua volta altri JMenuItem.
    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 L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Inserire "menu" in una JToolBar

    Originariamente inviato da andbin
    A parte il fatto, scusa, che non è ben chiaro quale è il problema/dubbio tecnico che devi risolvere. Il tuo problema è come mettere un menù in una toolbar? O come fare dei sottomenù? O altro?
    Beh, mi pare di aver scritto quello che mi interessa... Inserire un menu in una toolbar




    Originariamente inviato da andbin Comunque un JMenu contiene dei JMenuItem. Un JMenuItem può anche essere un JCheckBoxMenuItem, JRadioButtonMenuItem oppure a sua volta un JMenu. Quindi se vuoi fare dei sotto-menù, basta che come item metti un JMenu che avrà a sua volta altri JMenuItem.

    E' la prima cosa che ho provato a fare ma non funziona. Questo è quello che succede se provo ad aggiungere un JMenu (con 2 JMenuitem) alla toolbar:





    Anche se il menu ha degli items se clicco sopra a "delete" non succede niente, il menu non appare
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

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

    Re: Re: Re: Inserire "menu" in una JToolBar

    Originariamente inviato da Alex'87
    Anche se il menu ha degli items se clicco sopra a "delete" non succede niente, il menu non appare
    Credo che tu debba mettere nella toolbar un JMenuBar, non direttamente il JMenu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: Re: Re: Re: Inserire "menu" in una JToolBar

    Originariamente inviato da andbin
    Credo che tu debba mettere nella toolbar un JMenuBar, non direttamente il JMenu.
    Ho provato anche quello e la situazione è leggermente migliorata:



    Il problema ora è un'altro: l'icona mi viene messa troppo in basso rispetto alle altre icone :|
    C'è un modo semplice per sistemare tutto?

    Ho visto che in questo screen c'è quello che mi interessa:


    ma non trovo il codice per farlo :'(


    Intanto grazie ^^
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Utente di HTML.it L'avatar di Metflar
    Registrato dal
    Apr 2007
    Messaggi
    790
    io ho forse una soluzione(sempre se funziona) crei un popup menu e imposti il mouseListener sopra il JButton(naturalmente nn con il click destro ma sinistro)

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da Metflar
    io ho forse una soluzione(sempre se funziona) crei un popup menu e imposti il mouseListener sopra il JButton(naturalmente nn con il click destro ma sinistro)
    E' quello che ho provato a fare ma ho difficoltà nel impostare le coordinate di "apparizione".
    Ora è così:

    codice:
            deleteSnippetButton.addMouseListener(new MouseAdapter() {
    
                @Override
                public void mouseClicked(MouseEvent e) {
                    popupMenu.show(deleteSnippetButton, e.getX(), e.getY());
                }
            });
    Il problema è che (e.getX(), e.getY()) è il punto in cui faccio click e pertanto il menu appare a partire da li e non da sotto il bottone! 8(
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Risolto!

    Mi sono creato questa classe e funziona!

    Codice PHP:
    package com.javastaff.alessandro.jcode.gui;

    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.Icon;
    import javax.swing.JButton;
    import javax.swing.JPopupMenu;

    class 
    DropDownButton extends JButton implements ActionListener {

        protected 
    JPopupMenu popup = new JPopupMenu();

        public 
    DropDownButton(Icon i) {
            
    super(i);
            
    popup.add("Prova 1");
            
    popup.add("Prova 2");

            
    addActionListener(this);
        }

        public 
    void actionPerformed(ActionEvent e) {
            
    popup.show(this0getHeight());
        }


    Adesso la sistemo un po' ^^
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  9. #9
    grazie per la pillola... Ma non mi è chiaro come rendo visibile un nuovo componente dal popup...
    ad esempio se volessi fare che alla voce prova 1 appaia una nuova finestra come dovrei fare?
    Cioè dovrei fare che alla pressione di prova 1 avvenga questo

    Codice PHP:
    Ris win = new Ris();
    win.setVisible(true); 
    alla voce prova 2 una nuova finestra e così via.... come si fa?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Vincent
    Ma non mi è chiaro come rendo visibile un nuovo componente dal popup...
    ad esempio se volessi fare che alla voce prova 1 appaia una nuova finestra come dovrei fare?
    Cioè dovrei fare che alla pressione di prova 1 avvenga questo

    Codice PHP:
    Ris win = new Ris();
    win.setVisible(true); 
    alla voce prova 2 una nuova finestra e così via.... come si fa?
    Praticamente come hai appena detto. Alle voci del menù (i JMenuItem) avrai sicuramente associato degli ActionListener (qui poi è da vedere se uno solo che gestisce più voci o uno per ogni voce .... ma il concetto non cambia) e nel actionPerformed(), in base alla voce di menù associata, farai proprio una cosa come sopra. Istanzi la tua classe (che suppongo estende es. JFrame o JDialog) e la rendi visibile. Chiaramente se devi passare dati o il reference al "owner" (se fosse JDialog) o altro, dovrai passarli ad un apposito costruttore della tua classe che farà una chiamata al super costruttore passando ciò che è necessario.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.