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