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

    aggiungere un jbutton condiviso da piu jframe

    salve a tutti, sto facendo un quiz e ho creato tanti jframe che si aprono l'uno dopo l'altro ,dovrei usare due bottoni condivisi da tutti i jframe in modo che non appena ho cliccato n volte il bottone scompare, ovviamente i suggerimenti sono limitati e dato che ogni jframe è una cosa a se ho pensato di mettere una classe che ha il jbutton come proprietà
    codice:
    public class gen 
    {
    public JButton aiuto= new JButton("aiuto");
    }
    public gen() {
    }
    
    e per ogni jframe invece faccio cosi:
    
    gen ge = new gen(); // creo l'ogetto della classe gen con costruttore vuoto
    ge.aiuto.setBounds(34, 64, 138, 36);
    ge.aiuto.setVisible(true);
    contentPane.add(ge.aiuto);
    fila tutto liscio senza errori ma il bottone nn compare proprio , come posso fare? ho provato anke a metterlo static il jbutton nella classe ma nn va lo stesso...

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da eleinad85 Visualizza il messaggio
    salve a tutti, sto facendo un quiz e ho creato tanti jframe che si aprono l'uno dopo l'altro
    Sono istanze di classi di frame diverse o istanze della stessa classe? Ma in ogni caso sappi che a livello estetico, grafico, non è proprio bellissimo che l'utente veda chiudersi un frame e un altro aprirsi. Parlo proprio dell'effetto visivo. Non è il massimo ....

    Se proprio vuoi continuare su questa strada, fai almeno in modo che quando un frame si chiude prendi posizione/dimensione e li applichi a quello nuovo che si apre.

    Quote Originariamente inviata da eleinad85 Visualizza il messaggio
    dovrei usare due bottoni condivisi da tutti i jframe
    Già "condiviso" è un termine che non sta molto bene qui. Se intendi condividere un oggetto JButton, no. Un componente ha solo 1 parente a livello strutturale della interfaccia, ovvero può stare in un solo contenitore.
    Se crei oggetto frame distinti, ciascuno potrà avere il suo oggetto JButton distinto dagli altri. Quindi la "condivisione" non c'entrerebbe nemmeno.

    Quote Originariamente inviata da eleinad85 Visualizza il messaggio
    codice:
    public class gen 
    {
    public JButton aiuto= new JButton("aiuto");
    Comunque no, campi "pubblici" aperti a tutti giusto perché ti fa comodo, non va bene.

    Quote Originariamente inviata da eleinad85 Visualizza il messaggio
    ho provato anke a metterlo static il jbutton nella classe
    Peggio ancora, a livello di design.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Sono istanze di classi di frame diverse o istanze della stessa classe? Ma in ogni caso sappi che a livello estetico, grafico, non è proprio bellissimo che l'utente veda chiudersi un frame e un altro aprirsi. Parlo proprio dell'effetto visivo. Non è il massimo ....

    Se proprio vuoi continuare su questa strada, fai almeno in modo che quando un frame si chiude prendi posizione/dimensione e li applichi a quello nuovo che si apre.


    Già "condiviso" è un termine che non sta molto bene qui. Se intendi condividere un oggetto JButton, no. Un componente ha solo 1 parente a livello strutturale della interfaccia, ovvero può stare in un solo contenitore.
    Se crei oggetto frame distinti, ciascuno potrà avere il suo oggetto JButton distinto dagli altri. Quindi la "condivisione" non c'entrerebbe nemmeno.


    Comunque no, campi "pubblici" aperti a tutti giusto perché ti fa comodo, non va bene.


    Peggio ancora, a livello di design.
    sono istanze di classi diverse, io ho un jframe iniziale dove cè la presentazione bla bla bla, poi al pulsante inizia si avvia il jframe q1 , ovvero( public class q1 extends JFrame) poi in quest'ultimo dopo l'action event sul suo bottone risposta si aprirà public class q2 extends JFrame e cosi via .. a me serviva un bottone che lo potevano vedere e condividere tutti i jframe che apro...non è possibile una cosa del genere?
    Ultima modifica di eleinad85; 08-10-2014 a 22:45

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da eleinad85 Visualizza il messaggio
    sono istanze di classi diverse [...] a me serviva un bottone che lo potevano vedere e condividere tutti i jframe che apro...non è possibile una cosa del genere?
    Ti ripeto che:
    - un oggetto JButton (ma qualunque componente) usato contemporaneamente in due contenitori distinti entrambi visibili (in stessa finestra o finestre diverse, non c'entra) non è possibile.
    - usare un oggetto JButton in un frame, poi chiudere il frame e passare quell'oggetto JButton ad un altro frame, sì questo è tecnicamente possibile ma ha poco senso oltre a complicare solo le cose.

    Quindi il tuo "condividere", in che senso è? Se non vuoi che nelle classi frame1, frame2, frame3, ecc.... (classi distinte, insomma) tu debba ripetere ogni volta il codice es.:

    codice:
    private JButton pulsante;
    
        // es. nel costruttore
        pulsante = new JButton( ... );
    
        pulsante.addActionListener( .... );

    Allora sì, il tuo dubbio è lecito. Ma questo si risolve a livello di "design" delle classi. Le tue classi dei frame hanno delle cose in comune (proprietà o "comportamenti")? Allora la cosa più semplice, nonché tipica, è sfruttare la ereditarietà: una classe base che contiene proprietà/comportamenti comuni e N sottoclassi che specializzano il comportamento.
    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
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    direi che sarebbe anche un bene creare una struttura a livelli in cui invece di aggiungere JFrame si aggiungono JPanel.

    Il tuo programma ha un solo JFrame (quello principale), dividi lo schermo in almeno 2 sezioni, una contiene la parte variabile, uno contiene i pulsanti che tu vuoi fissi. Le azioni avvengono sui pannelli.
    Mi pare anche che il FlowLayout per la gestione del layout ti aiuti in questo.
    La soluzione non è ottimale, ha ragione andbin quando dice che c'è un problema alla base e bisogna chiedersi se il design sia stato fatto bene
    RTFM Read That F*** Manual!!!

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.