Problema GUI Swing/Awt

di il
14 risposte

Problema GUI Swing/Awt

Ragazzi ho un problema:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.*;
import javax.swing.event.*;
public class Bar {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ListaConsumazioni lista = new ListaConsumazioni();
		JFrame f = new JFrame("Gestione consumazioni");
		JPanel p = new JPanel();
		JButton registra = new JButton("Registra");

		
		JLabel ltipoconsumazione = new JLabel("Tipo Consumazione");
		JTextField tipo = new JTextField(10);
		JLabel lprezzo = new JLabel("Prezzo consumazione");
		JTextField prezzo = new JTextField(10);
		
		JTextArea a = new JTextArea(100,50);//qui verrà visualizzato lo scontrino
		JTextArea b = new JTextArea();
		JScrollPane scroll=new JScrollPane(b);//aggiunge lo scroll al campo di testo
		a.setEditable(false);
		b.setEditable(false);
		
		//sul jpanel p verrà implementato uno stile
		p.setLayout(new FlowLayout());//questo stile divide la finiestra in 5 parti
		p.add(new JLabel("Gestione Bar"));
		
		JPanel p2 = new JPanel();
		p2.setLayout(new FlowLayout());
		p2.add(ltipoconsumazione);
		p2.add(tipo);
		p2.add(lprezzo);
		p2.add(prezzo);
		
		JPanel p3 = new JPanel();
		p3.setLayout(new FlowLayout());
		p3.add(registra);
		
		
		
		
		f.addWindowListener(new GestoreFinestra());
		f.getContentPane().add(p);
		f.setSize(400,400);
		f.setLocation(500,300);
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setVisible(true);
		
	}

}
Come mai quando mando in esecuzione visualizzo solo la finestra con la label "Gestione Bar" e non visualizzo le altre jlabel e jtext?

14 Risposte

  • Re: Problema GUI Swing/Awt

    Ciao,

    il motivo è molto semplice: tu fai solo
    
    f.getContentPane().add(p);
    
    e nel pannello "p" hai messo solo la label "Gestione bar". Invece gli altri componenti li hai aggiunti ai pannelli "p2" e "p3", che però non visualizzi mai da nessuna parte.
  • Re: Problema GUI Swing/Awt

    minomic ha scritto:


    Ciao,

    il motivo è molto semplice: tu fai solo
    
    f.getContentPane().add(p);
    
    e nel pannello "p" hai messo solo la label "Gestione bar". Invece gli altri componenti li hai aggiunti ai pannelli "p2" e "p3", che però non visualizzi mai da nessuna parte.
    quindi dovrei aggiungere anche gli altri panel:
    f.getContentPane().add(p2);
    f.getContentPane().add(p3);
    ecc?
  • Re: Problema GUI Swing/Awt

    Sì ma probabilmente ti serve anche un layout dove aggiungere questi pannelli. Diciamo che la struttura è gerarchica: il frame dispone di un contentPane a cui è associato un certo layout. All'interno di questo "super-pannello" puoi inserire altri pannelli, ognuno con il suo layout, all'interno dei quali puoi inserire altri pannelli, e via così.
  • Re: Problema GUI Swing/Awt

    palestrato ha scritto:


    quindi dovrei aggiungere anche gli altri panel:
    f.getContentPane().add(p2);
    f.getContentPane().add(p3);
    "Nì". Il content-pane ha per default un BorderLayout. e fare add(c) è equivalente a fare add(c, BorderLayout.CENTER).
    Ma in ognuna delle 5 aree ci può stare 1 solo componente .... non 3.
  • Re: Problema GUI Swing/Awt

    f.getContentPane().add(p);
    		f.getContentPane().add(p2);
    		f.getContentPane().add(p3);
    		f.getContentPane().add(p4);
    		f.getContentPane().add(p5);
    ho modificato.. ma perchè adesso mi si visualizza solo gli oggetti grafici dell'ultimo panel?
  • Re: Problema GUI Swing/Awt

    Per il motivo che ti diceva andbin.
  • Re: Problema GUI Swing/Awt

    minomic ha scritto:


    Per il motivo che ti diceva andbin.
    e ma non ho capito ancora.. scusatemi ma è da poco che sto usando la grafica in java e questo è un esercizio..
  • Re: Problema GUI Swing/Awt

    Io nel frattempo ho aggiornato il codice:
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    
    import javax.swing.*;
    import javax.swing.event.*;
    public class Bar {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		ListaConsumazioni lista = new ListaConsumazioni();
    		JFrame f = new JFrame("Gestione consumazioni");
    		JPanel p = new JPanel();
    		JButton registra = new JButton("Registra");
    
    		
    		JLabel ltipoconsumazione = new JLabel("Tipo Consumazione");
    		JTextField tipo = new JTextField(10);
    		JLabel lprezzo = new JLabel("Prezzo consumazione");
    		JTextField prezzo = new JTextField(10);
    		
    		JTextArea a = new JTextArea(100,50);//qui verrà visualizzato lo scontrino
    		JTextArea b = new JTextArea();
    		JScrollPane scroll=new JScrollPane(b);//aggiunge lo scroll al campo di testo
    		a.setEditable(false);
    		b.setEditable(false);
    		scroll.setAutoscrolls(true);
    		
    		JLabel ltotale = new JLabel("Incasso totale:");
    		JTextArea c = new JTextArea();
    		c.setEditable(false);
    		
    		//sul jpanel p verrà implementato uno stile
    		p.setLayout(new FlowLayout());
    		p.add(new JLabel("Gestione Bar"));
    		
    		JPanel p2 = new JPanel();
    		p2.setLayout(new FlowLayout());
    		p2.add(ltipoconsumazione);
    		p2.add(tipo);
    		p2.add(lprezzo);
    		p2.add(prezzo);
    		
    		JPanel p3 = new JPanel();
    		p3.setLayout(new FlowLayout());
    		p3.add(registra);
    		
    		JPanel p4 = new JPanel();
    		p4.setLayout(new FlowLayout());
    		p4.add(a);
    		p4.add(scroll);
    		
    		JPanel p5 = new JPanel();
    		p5.setLayout(new FlowLayout());
    		p5.add(ltotale);
    		p5.add(c);
    		
    		
    		f.pack();
    		f.addWindowListener(new GestoreFinestra());
    		f.getContentPane().add(p);
    		f.getContentPane().add(p2);
    		f.getContentPane().add(p3);
    		f.getContentPane().add(p4);
    		f.getContentPane().add(p5);
    		f.setSize(400,400);
    		f.setLocation(500,300);
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		f.setVisible(true);
    		
    	}
    
    }
    
    in poche parole devo poter inserire il tipo di consumazione e poi il prezzo e in una textaria devo visualizzare lo scontrino mentre nell'altra tutte le consumazioni della giornata.. e poi devo poter visualizzare l'incasso totale giornaliero
    Se non ho capito male, dovrei modificare lo stile del content pane?
  • Re: Problema GUI Swing/Awt

    palestrato ha scritto:


    Se non ho capito male, dovrei modificare lo stile del content pane?
    Hai chiaro, anche solo mentalmente, come vuoi che sia la tua interfaccia grafica?
    Bene, allora prova a descriverla a parole. E da questo si potrà dedurre quale/i layout manager usare.
  • Re: Problema GUI Swing/Awt

    andbin ha scritto:


    palestrato ha scritto:


    Se non ho capito male, dovrei modificare lo stile del content pane?
    Hai chiaro, anche solo mentalmente, come vuoi che sia la tua interfaccia grafica?
    Bene, allora prova a descriverla a parole. E da questo si potrà dedurre quale/i layout manager usare.
    Allora in alto al centro una label con scritto: Gestione bar
    subito sotto label - textfield e label textfield
    sotto un bottone per registrazione la consumazione
    sotto a sinistra un area dove verrà visualizzato lo scontrino della consumazione precedente mentre a destra un area dove verrà visualizzato la lista di tutte le consumazioni
    sotto per ultimo una label e una textarea dove verrà visualizzato l'incasso totale giornaliero
  • Re: Problema GUI Swing/Awt

    Allora ho modificato un po... quello che ho ottenuto è stato questo:
    import java.awt.BorderLayout;
    import java.awt.FlowLayout;
    import java.awt.GridLayout;
    
    import javax.swing.*;
    import javax.swing.event.*;
    public class Bar {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		ListaConsumazioni lista = new ListaConsumazioni();
    		JFrame f = new JFrame("Gestione consumazioni");
    		JPanel p = new JPanel();
    		JButton registra = new JButton("Registra");
    
    		
    		JLabel ltipoconsumazione = new JLabel("Tipo Consumazione");
    		JTextField tipo = new JTextField(2);
    		JLabel lprezzo = new JLabel("Prezzo consumazione");
    		JTextField prezzo = new JTextField(2);
    		
    		JTextArea a = new JTextArea(15,5);//qui verrà visualizzato lo scontrino
    		JTextArea b = new JTextArea(15,5);
    		JScrollPane scroll=new JScrollPane(b);//aggiunge lo scroll al campo di testo
    		a.setEditable(false);
    		b.setEditable(false);
    		scroll.setAutoscrolls(true);
    		
    		JLabel ltotale = new JLabel("Incasso totale:");
    		JTextArea c = new JTextArea(1,4);
    		c.setEditable(false);
    		
    		//sul jpanel p verrà implementato uno stile
    		p.setLayout(new FlowLayout());
    		p.add(new JLabel("Gestione Bar"));
    		
    		JPanel p2 = new JPanel();
    		p2.setLayout(new BoxLayout(p2, BoxLayout.Y_AXIS));
    		p2.add(ltipoconsumazione);
    		p2.add(tipo);
    		p2.add(lprezzo);
    		p2.add(prezzo);
    		p2.add(registra);
    		
    		JPanel p3 = new JPanel();
    		p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
    		p3.add(new JLabel("Scontrino fiscale precedente:"));
    		p3.add(a);
    		
    		JPanel p4 = new JPanel();
    		p4.setLayout(new BoxLayout(p4, BoxLayout.Y_AXIS));
    		p4.add(new JLabel("Lista consumazioni totali"));
    		p4.add(scroll);
    		
    		JPanel p5 = new JPanel();
    		p5.setLayout(new FlowLayout());
    		p5.add(ltotale);
    		p5.add(c);
    		
    		
    		
    		f.addWindowListener(new GestoreFinestra());
    		f.getContentPane().add(p,BorderLayout.NORTH);
    		f.getContentPane().add(p2,BorderLayout.WEST);
    		f.getContentPane().add(p3,BorderLayout.CENTER);
    		f.getContentPane().add(p4,BorderLayout.EAST);
    		f.getContentPane().add(p5,BorderLayout.SOUTH);
    		f.setSize(400,400);
    		f.setLocation(500,300);
    		f.pack();
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		f.setVisible(true);
    		
    	}
    
    }
    
    ho messo l'immagine come allegato.. vorrei sapere se potessi migliorare l'aspetto grafico.. tipo le textfield troppo grosse a più piccole ecc
    Allegati:
    17048_a479e734297680f1a64d31b748c1224c.jpg
    17048_a479e734297680f1a64d31b748c1224c.jpg
  • Re: Problema GUI Swing/Awt

    Up
  • Re: Problema GUI Swing/Awt

    Dai almeno il tempo agli altri utenti di rispondere..
  • Re: Problema GUI Swing/Awt

    Certo, non tolgo il tempo a nessuno di rispondere.. ho scritto up solo per non far dimenticare il mio post ahah
Devi accedere o registrarti per scrivere nel forum
14 risposte