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

    [JAVA] interfaccia grafica in java

    salve sto creando un'agenda in java; mi sono fermato in una cosa apparentemente stupida ma non riesco ad arrivarne a capo....praticamente ho un JMenu che ha tre JMenuItem fissi di cui uno lo uso per permettere all utente di aggiungere suoi JMenuItem...il mio problema è che nel momento in cui chiudo l interfaccia i sottomenu aggiunti dall utente non restano, ma resta solo la parte ''fissa''..posto il codice che ho usato.

    CODE:
    frmMain = new JFrame ("AGENDA"); //Create frame
    frmMain.setSize(330, 375); //Set size to 400x400 pixels
    pane = frmMain.getContentPane(); //Get content pane
    pane.setLayout(null); //Apply null layout
    frmMain.setDefaultCloseOperation(JFrame.EXIT_ON_CL OSE); //Close when X is clicked



    menu = new JMenu("Elenco Categorie");
    JMenuItem ji=new JMenuItem("+");


    menu.add (new JMenuItem("voce 1"));
    menu.add (new JMenuItem("voce 2"));

    menu.add (ji);
    bar = new JMenuBar(); // crea la barra
    frmMain.setJMenuBar(bar); // la mette sulla finestra
    bar.add(menu); // aggiunge il menu' alla barra

    ji.addActionListener(new ActionListener(){

    @Override
    public void actionPerformed(ActionEvent arg0) {
    String a = JOptionPane.showInputDialog("inserisci il nome della nuova voce");

    menu.add(new JMenuItem(a),0);
    }
    });

    //Make frame visible
    frmMain.setResizable(false);
    frmMain.setVisible(true);
    }

    CODE





    ps non riesco a formattare come dice il regolamento
    Ultima modifica di ragazzo92; 10-08-2016 a 19:36

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ragazzo92 Visualizza il messaggio
    mi sono fermato in una cosa apparentemente stupida
    Che però non è affatto "banale", come leggerai sotto tra poco ...

    Quote Originariamente inviata da ragazzo92 Visualizza il messaggio
    praticamente ho un JMenu che ha tre JMenuItem fissi di cui uno lo uso per permettere all utente di aggiungere suoi JMenuItem...il mio problema è che nel momento in cui chiudo l interfaccia i sottomenu aggiunti dall utente non restano
    Ovviamente non restano ... se non fai tu qualcosa di esplicito in tal senso!

    Se è l'utente che può creare nuove voci di menù, allora queste sono delle "configurazioni" (impostazioni, settaggi .. chiamali come vuoi) dell'utente e come tali andrebbero quindi salvate da qualche parte in maniera persistente, in modo che al prossimo avvio della applicazione vengano lette ed applicate. Concettualmente come fanno tanti software dotati di "configurazioni/preferenze" che sicuramente conosci e/o usi.

    Ma ci sono alcuni aspetti da considerare. Il primo e più critico: NON basta nel tuo caso creare un nuovo JMenuItem con un nome scelto dall'utente. Questo lo hai fatto basilarmente con la riga:

    menu.add(new JMenuItem(a),0);

    Non basta perché su quel nuovo JMenuItem ci devi anche registrare un listener! In modo che alla azione della voce venga eseguito "qualcosa". Quindi un punto importante da capire/stabilire (e non l'hai spiegato): COSA devono fare le voci di menù create dall'utente?

    Il secondo punto è appunto come rendere "persistenti" queste configurazioni. Tecnicamente/teoricamente sarebbe possibile usare la serializzazione degli oggetti per salvare su uno stream (file) direttamente gli oggetti JMenuItem. Ma ti dico subito: NON farlo.
    Dovresti "modellare" bene le informazioni che servono per avere una configurazione "logica" di ciascuna voce. Sicuramente un String con il testo e poi ... "altro" ma devi innanzitutto rispondere alla domanda di prima.

    E tutto questo ti assicuro che non è una cosa "stupida" (nel senso di "banale"). Anzi, se finora hai fatto X, allora per realizzare un sistema di configurazione dei menù "dinamico" gestito dall'utente dovrai studiare/impegnarti almeno un 30X.
    Ultima modifica di andbin; 10-08-2016 a 21:17
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    prima di tutto grazie per la risposta...per rispondere alla tua prima domanda ti dico che i miei sottomenu devono contenere delle sottovoci che contengono diciamo una descrizione del sottomenu stesso:mi spiego con un esempio;diciamo che una voce di quelle che deve aggiungere l utente (che sarebbe uno dei JMenuItem che ho postato sopra) si chiama ''amici'' la mia intenzione è aggiungere a questa voce delle sottovoci del tipo ''nome'',''ci vediamo tra x tempo'' e simili. L unico motivo per cui non ho specificato è che prima volevo risolvermi questo problema del salvataggio dei vari sottomenu diciamo....naturalmente per avere queste sottovoci devo salvare prima le principali altrimenti poi al prossimo riavvio del processo non mi ritroverei nulla e avrei solo perso tempo. Per trovare una soluzione ci sto vicino da mezza giornata senza fare progressi percio ho postato qua..non ho ben capito il tuo consiglio puoi spiegarti meglio?grazie ancora

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ragazzo92 Visualizza il messaggio
    la mia intenzione è aggiungere a questa voce delle sottovoci del tipo ''nome'',''ci vediamo tra x tempo'' e simili.
    E quindi cosa ci dovrà poi fare l'utente con queste voci? Le clicca (se le clicca) per fare cosa? Se la tua risposta è: non ci deve fare nulla .... allora molto probabilmente l'approccio a livello di "user experience" non è quello giusto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    no beh deve permettere di visualizzare/aggiungere/modificare delle informazioni essendo un'agenda.....poi dopo aver risolta questa parte in java dovrei fare lo stesso in android ed infine sincronizzare le due componenti con un server

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da ragazzo92 Visualizza il messaggio
    deve permettere di visualizzare/aggiungere/modificare delle informazioni
    E quindi (andiamo, scusa, un po' nei dettagli ...) quale è la "azione" che le voci devono compiere? È la stessa indifferentemente dalla voce? O dipende dalla voce? O che altro?
    Quello che devi stabilire è se la "azione" è qualcosa che rientra nel contesto della "configurazione" oppure no.

    Quote Originariamente inviata da ragazzo92 Visualizza il messaggio
    essendo un'agenda.....
    Ma se è una "agenda", usare dei menu item non mi sembra un buon approccio. Parlo proprio a livello di user-interface.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Sisi è indifferente dalla voce,una volta che creo una voce già so che quella voce fa quella cosa...il voler usare il menuItem per l aggiunta di una nuova voce é stata una scelta mia..ma potevo usare indifferentemente un altro metodo...poi per il fatto della scelta di usare i menu item li ho messi perché mi veniva chiesto dalla traccia un menu a comparsa dentro cui ho queste categorie che fanno queste cose..poi se mi consigli di usare un altro oggetto..i consigli sono ben accetti..grazie mille per i consigli che mi dai comunque

Tag per questa discussione

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.