Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    43

    Modificare dimensioni finestra

    Ciao a tutti, vorrei chiedervi un aiuto per un esercizio di java, sono un novello, in pratica devo creare una finestra con due pulsanti e il primo ingrandisce la finestra, il secondo la rimpicciolisce.
    Di creare la finestra e i pulsanti sono in grado, il problema sorge quando devo legare i pulsanti con la classe addetta agli eventi.
    Come sistema ho deciso di crearmi una classe con il JFrame, poi una classe in cui imposto il JPanel e di passare quest'ultima al mio JFrame, poi creo una terza classe per gli eventi.
    Poiche' i pulsanti sono contenuti nel JPanel, non posso legarli alla classe addetta agli eventi, perche' non posso passargli il JFrame, che e' quello che devo ridimensionare.
    Non so come fare, potete darmi una mano per favore.
    Spero di essermi spiegato, in caso domandate che mi spiego meglio.
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Modificare dimensioni finestra

    Originariamente inviato da cryspolo
    Poiche' i pulsanti sono contenuti nel JPanel, non posso legarli alla classe addetta agli eventi, perche' non posso passargli il JFrame, che e' quello che devo ridimensionare.
    E perchè no?
    Tu hai 3 classi:

    - Finestra (il JFrame)
    - Pannello (il JPanel con i pulsanti)
    - Listener (l'ActionListener)

    Dovrai fare in modo che Pannello riceva un riferimento alla classe Finestra (tramite il costruttore o tramite un metodo apposito)

    Poi dovrai fare in modo che il Listener riceva un riferimento a Pannello (o, perchè no? a Finestra), sempre tramite costruttore o tramite metodo apposito.

    A questo punto, il Listener avrà un riferimento da usare per invocare un metodo apposito: se ha un riferimento a Finestra è semplice poichè può agire direttamente sul setSize(); se ha un riferimento a Pannello, chiamerà un metodo di questa classe che si occuperà a sua volta di richiamare il setSize() sul suo riferimento a Finestra.

    codice:
    public class Finestra extends JFrame {
       ...
       private Pannello pannello;
       ...
       pannello = new Pannello( this );
    }
    
    public class Pannello extends JPanel {
       ...
       private Finestra finestra;
       private MioListener listener;
       ...
       public Pannello(Finestra finestra) {
          this.finestra = finestra;
          ...
          listener = new MioListener( finestra );
       }
    }
    
    public class MioListener implements ActionListener {
       private Finestra finestra;
       ...
       public MioListener(Finestra finestra) {
          this.finestra = finestra;
       }
       ...
       @Override
       public void actionPerformed(ActionEvent ae) {
          ...
          // Ridimensiono la finestra
          finestra.setSize( ... );
       }
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2011
    Messaggi
    43
    Ci sono riuscito, ti ringrazio.
    Per caso puoi darmi una dritta anche sul come spostare un pulsante in maniera casuale.
    Io premo il pulsante e questo di sposta a caso nella finestra.
    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da cryspolo
    Ci sono riuscito, ti ringrazio.
    Per caso puoi darmi una dritta anche sul come spostare un pulsante in maniera casuale.
    Io premo il pulsante e questo di sposta a caso nella finestra.
    Grazie
    Usa la classe Random per ottenere dei valori casuali (controllandone il range), poi passi questi valori al metodo setLocation() del pulsante.

    PS: è un problema diverso da quello trattato in questa discussione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.