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

    Posizionare più componenti in un FRAME

    Ciao..

    sto creando l'interfaccia grafica di un programma, ma non riesco a cambiare la posizione dei componenti nel Frame!

    Il codice è il seguente:
    codice:
    	public static void main(String[] args)
    	{
    		// Dimensioni FRAME
    		final int WIDTH = 400;
    		final int HEIGHT = 800;
    		
    		// Dimensioni TEXTFIELD
    		final int INPUT_WIDTH = 20;
    		
    		JFrame frame = new JFrame();
    		
    		JLabel nome = new JLabel("NOME: ");
    		JTextField input_nome = new JTextField(INPUT_WIDTH);
    		
    		JLabel cognome = new JLabel("COGNOME: ");
    		JTextField input_cognome = new JTextField(INPUT_WIDTH);
    		
    		JLabel data = new JLabel("DATA DI NASCITA: ");
    		JTextField input_data = new JTextField(INPUT_WIDTH);
    		
    		JLabel sex = new JLabel("SESSO: ");
    		JTextField input_sex = new JTextField(INPUT_WIDTH);
    		
    		JLabel luogo = new JLabel("LUOGO DI NASCITA: ");
    		JTextField input_luogo = new JTextField(INPUT_WIDTH);
    		
    		JPanel pannello_nome = new JPanel();
    		JPanel pannello_cognome = new JPanel();
    		JPanel pannello_data = new JPanel();
    		JPanel pannello_sex = new JPanel();
    		JPanel pannello_luogo = new JPanel();
    		
    		// Aggiungo i LABEL ai rispettivi PANNELLI
    		pannello_nome.add(nome);
    		pannello_nome.add(input_nome);
    		pannello_cognome.add(cognome);
    		pannello_cognome.add(input_cognome);
    		pannello_data.add(data);
    		pannello_data.add(input_data);
    		pannello_sex.add(sex);
    		pannello_sex.add(input_sex);
    		pannello_luogo.add(luogo);
    		pannello_luogo.add(input_luogo);
    		
    		// Aggiungo i pannelli al FRAME
    		frame.add(pannello_nome);
                              ...ALTRI PANNELLI		
    
    		frame.setSize(WIDTH, HEIGHT);
    		frame.setTitle("Programma per il calcolo del Codice Fiscale");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setVisible(true);
    Praticamente aggiungendo i pannelli nel frame me li sovrascrive!
    Voglio sapere se esistono escape oppure metodi per posizionare i componenti in un frame!

    Grazie in anticipo per l'aiuto!

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

    Re: Posizionare più componenti in un FRAME

    Originariamente inviato da VincenzoTheBest
    Voglio sapere se esistono escape oppure metodi per posizionare i componenti in un frame!
    Devi prima capire cosa sono e come funzionano i "layout manager".

    http://java.sun.com/docs/books/tutor...out/index.html
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ho scelto di applicare il GridLayout al Frame, però non so come allineare i componenti orrizzontalmente!

    Inoltre, mi sapreste dire se c'è un metodo per bloccare il tasto 'Ingranidsci' (sta tra 'Riduci ad icona' e 'Chiudi' del Frame?

    Grazie!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Ho scelto di applicare il GridLayout al Frame, però non so come allineare i componenti orrizzontalmente!
    GridLayout suddivide il contenitore in una griglia di N*M celle di uguale dimensione. Cosa intendi per "allineare i componenti orrizzontalmente"?

    Originariamente inviato da VincenzoTheBest
    Inoltre, mi sapreste dire se c'è un metodo per bloccare il tasto 'Ingranidsci' (sta tra 'Riduci ad icona' e 'Chiudi' del Frame?
    setResizable(false)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Cioè mettere i label a sinistra...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Cioè mettere i label a sinistra...
    Credo che l'esempio che fa la documentazione di GridLayout sia più che eloquente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Va bè anche creando due colonne i label restano allineati al centro...non vanno a sinistra

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Va bè anche creando due colonne i label restano allineati al centro...non vanno a sinistra
    In un GridLayout un JLabel occupa tutta l'area della cella. E nel caso di JLabel con solo testo, per default l'allineamento è LEADING (il leading edge a seconda dell'orientamento in base alla lingua). A meno che tu imposti un diverso allineamento con setHorizontalAlignment().

    Continuo a non capire il problema. Magari posta del codice.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Il codice dell'interfaccia è il seguente:

    codice:
    	public static void main(String[] args)
    	{
    		// Dimensioni FRAME
    		final int WIDTH = 400;
    		final int HEIGHT = 200;
    		
    		// Dimensioni TEXTFIELD
    		final int INPUT_CN = 15;
    		final int INPUT_SEX = 1;
    		final int INPUT_DATA = 8;
    		final int INPUT_LUOGO = 15;
    		
    		JFrame frame = new JFrame();
    		GridLayout layout = new GridLayout(5, 1, 0, 0);	
    		
    		JLabel nome = new JLabel("NOME ");
    		JTextField input_nome = new JTextField(INPUT_CN);
    		
    		JLabel cognome = new JLabel("COGNOME ");
    		JTextField input_cognome = new JTextField(INPUT_CN);
    		
    		JLabel data = new JLabel("DATA DI NASCITA (gg/mm/aa) ");
    		JTextField input_data = new JTextField(INPUT_DATA);
    		
    		JLabel sex = new JLabel("SESSO ");
    		JRadioButton m = new JRadioButton("Maschio");
    		JRadioButton f = new JRadioButton("Femmina");
    		
    		m.setSelected(true);
    		
    		JLabel luogo = new JLabel("LUOGO DI NASCITA ");
    		JTextField input_luogo = new JTextField(INPUT_LUOGO);
    		
    		JPanel pannello_nome = new JPanel();
    		JPanel pannello_cognome = new JPanel();
    		JPanel pannello_data = new JPanel();
    		JPanel pannello_sex = new JPanel();
    		JPanel pannello_luogo = new JPanel();
    		
    		// Aggiungo i LABEL ai rispettivi PANNELLI
    		pannello_nome.add(nome);
    		pannello_nome.add(input_nome);		
    		pannello_cognome.add(cognome);
    		pannello_cognome.add(input_cognome);
    		pannello_data.add(data);
    		pannello_data.add(input_data);
    		pannello_sex.add(sex);
    		pannello_sex.add(m);
    		pannello_sex.add(f);
    		pannello_luogo.add(luogo);
    		pannello_luogo.add(input_luogo);
    		
    		// Aggiungo i pannelli al FRAME
    		frame.add(pannello_nome);
    		frame.add(pannello_cognome);
    		frame.add(pannello_data);
    		frame.add(pannello_sex);
    		frame.add(pannello_luogo);
    		
    		if(f.isSelected())
    			m.setSelected(false);
    			
    		frame.setSize(WIDTH, HEIGHT);
    		frame.setLayout(layout);
    		frame.setTitle("Programma per il calcolo del Codice Fiscale");
    		frame.setResizable(false);
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setVisible(true);	
    					
    	}
    Il problema sta nell'allineare a sinistra i label e i textfield!
    Grazie ancora per l'aiuto!

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da VincenzoTheBest
    Il problema sta nell'allineare a sinistra i label e i textfield!
    Hai creato un GridLayout di 5x1 e l'hai applicato al JFrame, quindi il suo content-pane è suddiviso in 5 aree.
    In queste aree hai inserito dei JPanel ma un JPanel per default (se non diversamente specificato) usa un FlowLayout con allineamento centrato!!!

    Quindi se vuoi mantenere quei JPanel, almeno creali passando appunto un FlowLayout a sua volta creato specificando un allineamento LEFT. Oppure usa altre combinazioni di layout-manager.
    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.