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);
		}
	}
}