Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    [JAVA]Dimensioni jframe

    Ave populus,
    ho una domanda riguardante Java:
    come componentio grafici uso Swing, ed ho un problema nel settare le dimensioni della finestra; ovvero, io scrivo così:
    codice:
    private static void createAndShowGUI(String d) 
    {
    	JFrame.setDefaultLookAndFeelDecorated(true);
    	
    	JFrame frame = new JFrame("Agenda");
    	 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(800, 600);
    	
    	JLabel label = new JLabel(d);
    	frame.getContentPane().add(label);
    	
    	frame.pack();
    	frame.setVisible(true);
    }
    però non mi setta a 800x600 la finestra, io credo dipenda dal layout manager utilizzato, ma essendo agli inizi con java non sò quale (e se) layout serva
    potete aiutarmi???

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non dipende dal LayoutManager ma dal metodo pack() che hai usato. Rimuovi l'istruzione frame.pack();


    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 L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da LeleFT
    Non dipende dal LayoutManager ma dal metodo pack() che hai usato. Rimuovi l'istruzione frame.pack();


    Ciao.
    Grande, funfiona;
    ma per capire, perchè ho dovuto rimuovere frame.pack();?

    inoltre, visto che massimizza per tutta l'area del frame la label, qual'è quel layout manager che mi permette di posizionare i componenti dove voglio e con la dimensione che voglio io?

    Spero di essermi fatto capire

  4. #4
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    ovvero, ho scritto così:
    codice:
    private static void createAndShowGUI(String d) 
    {
    	JFrame.setDefaultLookAndFeelDecorated(true);
    	
    	JFrame frame = new JFrame("Agenda");
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(800, 600);
    	
    	JLabel label = new JLabel(d);
    	label.setSize(80,20)
    	frame.getContentPane().add(label);
    	
    	frame.setVisible(true);
    }
    ma non mi ridimensiona la label

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Una cosa alla volta:

    1) Perchè hai dovuto togliere il metodo pack()? Perchè quel metodo imposta automaticamente la dimensione della finestra, adattandola ad occupare il minor spazio possibile in base ai componenti che vi sono inseriti. In pratica contraddice quello che volevi fare tu

    2) Come fai a fare in modo che la JLabel non si ingrandisca a occupare tutto lo spazio del JFrame? Devi semplicemente cambiare LayoutManager. Di default è impostato un BorderLayout e sempre di default il primo componente va a finire nel BorderLayout.CENTER. Se non ci sono altri componenti, l'unico presente prende tutto lo spazio.

    3) Come fai a posizionare i tuoi componenti dove vuoi con la dimensione che vuoi? Basta rimuovere il LayoutManager. Nessuno ti obbliga ad usarlo. Per fare questo devi utilizzare i seguenti metodi:
    codice:
    private static void createAndShowGUI(String d) 
    {
    	JFrame.setDefaultLookAndFeelDecorated(true);
    	
    	JFrame frame = new JFrame("Agenda");
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(800, 600);
    
            // Qui tolgo il LayoutManager
            frame.getContentPane().setLayout( null ); 
    	
    	JLabel label = new JLabel(d);
    	label.setSize(80,20)
    
            // Qui imposto la posizione e la dimensione della JLabel:
            // Posizione (x: 20, y: 10)
            // Dimensione (orizzontale: 80, verticale: 25)
            label.setBounds(20, 10, 80, 25);
    	frame.getContentPane().add(label);
    	
    	frame.setVisible(true);
    }
    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

  6. #6
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    @LeleFT: ok grassie

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.