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

    GridBagLayout non funziona

    salve a tutti,
    sto sviluppando un semplice programma in java con interfaccia grafica che risolve potenze ad esponente intero. Per la prima volta ho provato il GridBagLayout, ma ho un problema, perchè quando aggiungo un elemento in una cella quello precedente viene sovrascritto. In pratica visualizzo solo l'elemento grafico. c'è un modo per mettere le cose a posto?
    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class Potenza extends JFrame
    {
    		Label grisultato=new Label("Risultato:                                 ");
    		JButton calcola=new JButton();
    		JTextField gesponente=new JTextField();
    		Label eesponente=new Label("Esponente:");
    		JTextField gbase=new JTextField();
    		Label ebase=new Label("Base:");
    	public Potenza()
    	{
    		//Regole per la finestra
    		setTitle("Calcolo di potenze ad esponente intero");
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setVisible(true);
    		setSize(350,95);
    		setResizable(false);
    		setLocation(300,200);
    		
    		//Definizione layout
    		GridBagLayout layout=new GridBagLayout();
    		GridBagConstraints lim=new GridBagConstraints();
    		
    		//Etichetta base
    		lim.gridx=0;
    		lim.gridy=0;
    		layout.setConstraints(ebase,lim);
    		add(ebase);
    		
    		//Casella di testo per la base
    		lim.gridx=1;
    		lim.gridy=0;
    		layout.setConstraints(gbase,lim);
    		add(gbase);
    		
    		//Etichetta esponente
    		lim.gridx=0;
    		lim.gridy=1;
    		layout.setConstraints(eesponente,lim);
    		add(eesponente);
    		
    		//Casella di testo per l'esponente
    		lim.gridx=1;
    		lim.gridy=1;
    		layout.setConstraints(gesponente,lim);
    		add(gesponente);
    		
    		//Pulsante calcola
    		lim.gridx=0;
    		lim.gridy=2;
    		layout.setConstraints(calcola,lim);
    		add(calcola);
    		
    		//Risultato
    		lim.gridx=1;
    		lim.gridy=2;
    		layout.setConstraints(grisultato,lim);
    		add(grisultato);
    		
    		//Inclusione ascoltatore
    		calcola.addActionListener(new Calcolo());
    	}
    	public static void main(String[] args)
    	{
    		new Potenza();
    	}
    	public class Calcolo implements ActionListener
    	{
    		public void actionPerformed(ActionEvent evt)
    		{
    			double base;
    			double risultato;
    			int iter;
    			int esponente;
    			base=Double.parseDouble(gbase.getText());
    			esponente=Integer.parseInt(gesponente.getText());
    			risultato=1;
    			for(iter=0;iter<esponente;++iter){
    				risultato=risultato*base;
    			}
    			String srisultato=Double.toString(risultato);
    			if(srisultato=="Infinity"){srisultato="Valore troppo grande";}
    			grisultato.setText("Risultato: "+srisultato);
    		}
    	}
    }

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

    Re: GridBagLayout non funziona

    Originariamente inviato da furbostandby
    quando aggiungo un elemento in una cella quello precedente viene sovrascritto.
    Semplicemente perché il "contenitore" (nel tuo caso il content pane del JFrame) non sta usando il tuo GridBagLayout ... ma il suo BorderLayout predefinito.
    Infatti non basta aver istanziato un nuovo GridBagLayout, devi proprio anche assegnarlo al contenitore in cui inserisci i componenti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    quindi concretamente cosa faccio?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da furbostandby
    quindi concretamente cosa faccio?
    Nel costruttore:

    codice:
    getContentPane().setLayout( layout );
    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

  5. #5
    ok grazie a tutti
    ciao

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.