Allora ragazzi, in attesa del libro su swing consigliato da andbin, ho iniziato a mettere un po' mano da solo con windows builder ma ne è uscito un macello ..
nonostante ciò ho provato a fare una calcolatrice ( aiutandomi con delle guide si internet) ed ecco il codice (malfunzionante,ovviamente..)
public class CalcolatriceFinestra extends JFrame {
private JPanel contentPane;
private JTextField textField;
private JTextField testo;
private boolean displayVuoto=true;
private int operandoCorrente= 0;
private char operatoreCorrente= '?';
/**
* Launch the application.
*/
// public static void main(String[] args) {
// EventQueue.invokeLater(new Runnable() {
// public void run() {
// try {
// CalcolatriceFinestra frame = new CalcolatriceFinestra();
// frame.setVisible(true);
// } catch (Exception e) {
// e.printStackTrace();
// }
// }
// });
// }
/**
* Create the frame.
*/
public CalcolatriceFinestra() {
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 171, 218);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
textField = new JTextField();
contentPane.add(textField);
textField.setColumns(10);
JLabel label = new JLabel("");
contentPane.add(label);
testo = new JTextField();
contentPane.add(testo, BorderLayout.NORTH);
testo.setColumns(10);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
panel.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
JButton button = new JButton("1");
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
inseritaCifra(1);
}
});
button.setHorizontalAlignment(SwingConstants.LEFT);
panel.add(button);
JButton button_1 = new JButton("2");
button_1.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
inseritaCifra(2);
}
});
panel.add(button_1);
JButton button_2 = new JButton("3");
button_2.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
inseritaCifra(3);
}
});
button_2.setHorizontalAlignment(SwingConstants.RIGHT);
panel.add(button_2);
JButton button_3 = new JButton("4");
button_3.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
inseritaCifra(4);
}
});
button_3.setHorizontalAlignment(SwingConstants.LEFT);
panel.add(button_3);
JButton button_4 = new JButton("5");
button_4.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
inseritaCifra(5);
}
});
panel.add(button_4);
JButton button_5 = new JButton("6");
button_5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritaCifra(6);
}
});
button_5.setHorizontalAlignment(SwingConstants.RIGHT);
panel.add(button_5);
JButton button_6 = new JButton("7");
button_6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritaCifra(7);
}
});
button_6.setHorizontalAlignment(SwingConstants.LEFT);
panel.add(button_6);
JButton button_7 = new JButton("8");
button_7.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritaCifra(8);
}
});
panel.add(button_7);
JButton button_8 = new JButton("9");
button_8.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritaCifra(9);
}
});
button_8.setHorizontalAlignment(SwingConstants.RIGHT);
panel.add(button_8);
JButton button_14 = new JButton("0");
button_14.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
inseritaCifra(0);
}
});
panel.add(button_14);
JButton button_9 = new JButton("+");
button_9.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritoOperatore('+');
}
});
panel.add(button_9);
JButton button_12 = new JButton("/");
button_12.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritoOperatore('/');
}
});
panel.add(button_12);
JButton button_10 = new JButton("-");
button_10.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritoOperatore('-');
}
});
panel.add(button_10);
JButton button_11 = new JButton("*");
button_11.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritoOperatore('*');
}
});
panel.add(button_11);
JButton button_13 = new JButton("=");
button_13.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
inseritoOperatore('=');
}
});
panel.add(button_13);
panel.setFocusTraversalPolicy(new FocusTraversalOnArray(new Component[]{button, button_1, button_2, button_3}));
setVisible(true);
}
//Metodi
public void inseritaCifra( int i ) {
if (displayVuoto) {
testo.setText("");
displayVuoto = false;
}
testo.setText(testo.getText() + i);
}
private int calcolaRisultato(int n1,char segno,int n2)
{
int a=0;
switch(segno)
{
case '+' : a = (n1+n2);
case '-' : a = (n1-n2);
case '*' : a = (n1*n2);
case '/' : a = (n1*n2);
case '?' : a = 71;
default : a = 0;
}
return a;
}
public void inseritoOperatore( char c ) {
if (c == '=')
{
if (operatoreCorrente != '?')
{
int operando = Integer.parseInt(testo.getText());
int risultato =
calcolaRisultato(operandoCorrente, operatoreCorrente, operando);
testo.setText(String.valueOf(risultato));
operatoreCorrente = '?';
displayVuoto = true;
}
}
else
{
// Gestire l'operatore
if (operatoreCorrente == '?')
{
operandoCorrente = Integer.parseInt(testo.getText());
}
else
{
int operando = Integer.parseInt(testo.getText());
operandoCorrente =
calcolaRisultato(operandoCorrente, operatoreCorrente, operando);
testo.setText(String.valueOf(operandoCorrente));
}
operatoreCorrente = c;
displayVuoto = true;
}
}
}
il risultato è sempre 0, credo ci sia qualche problema nel costrutto switch perchè il codice mi sembra sensato e mi sono ispirato da una guida quindi non penso sia del tutto orripilante..per il resto non vi dico che odio verso questi layout predefiniti..un casino per mettere i pulsanti un po' come volevo io..aaaaaaah
Edit: risolto, non ditemi proprio quanto sono stupido cortesemente..
rimango il post se qualcuno potrebbe indirizzarmi qualche modo buono per imparare ad utilizzare le interfacce grafiche in attesa del libro