Le uniche differenze dal tuo codice sono che ho creato una nuova classe per il main (ho letto in giro su internet che conviene farlo) e che non uso il metodo pack() perchè ho un gridlayout e avrei una finestra priva di dimensioni.
In ogni caso posto il codice:
codice:
import java.awt.Color;import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.border.LineBorder;
import javax.swing.SwingConstants;
public class Finestra extends JFrame{
Container mainContainer;
JTextField mazzo, carte, percentuale;
JRadioButton primo, secondo;
public Finestra() {
JFrame window = new JFrame("Calcolo Probabilità");
window.setSize(347, 228);
window.setResizable(false);
window.setLocationRelativeTo(null);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainContainer = window.getContentPane();
mainContainer.setLayout(new GridLayout(5, 2));
JPanel panelMazzo1 = new JPanel();
mainContainer.add(panelMazzo1);
JLabel labelMazzo = new JLabel("Numero di carte nel mazzo:");
panelMazzo1.add(labelMazzo);
JPanel panelMazzo2 = new JPanel();
mainContainer.add(panelMazzo2);
mazzo = new JTextField();
mazzo.setPreferredSize(new Dimension(6, 24));
mazzo.setColumns(5);
mazzo.setBorder(BorderFactory.createLineBorder(Color.BLACK));
panelMazzo2.add(mazzo);
JPanel panelCarte1 = new JPanel();
mainContainer.add(panelCarte1);
JLabel labelCarte = new JLabel("<html>Numero di carte di cui<br>calcolare la probabilità:</html>");
panelCarte1.add(labelCarte);
JPanel panelCarte2 = new JPanel();
mainContainer.add(panelCarte2);
carte = new JTextField();
carte.setPreferredSize(new Dimension(6, 24));
carte.setColumns(5);
carte.setBorder(BorderFactory.createLineBorder(Color.BLACK));
panelCarte2.add(carte);
JPanel panelPartenza1 = new JPanel();
mainContainer.add(panelPartenza1);
JLabel labelPartenza = new JLabel("Partenza:");
panelPartenza1.add(labelPartenza);
JPanel panelPartenza2 = new JPanel();
mainContainer.add(panelPartenza2);
ButtonGroup group = new ButtonGroup();
primo = new JRadioButton("Primo", true);
secondo = new JRadioButton("Secondo");
group.add(primo);
group.add(secondo);
panelPartenza2.add(primo);
panelPartenza2.add(secondo);
JPanel panelBottoni1 = new JPanel();
mainContainer.add(panelBottoni1);
JButton calcola = new JButton("Calcola");
calcola.addActionListener(new clickBottone());
panelBottoni1.add(calcola);
JPanel panelBottoni2 = new JPanel();
mainContainer.add(panelBottoni2);
JButton reset = new JButton("Reset");
panelBottoni2.add(reset);
reset.addActionListener(new resetBottone());
JPanel panelPercentuale1 = new JPanel();
mainContainer.add(panelPercentuale1);
panelPercentuale1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
JLabel labelPercentuale = new JLabel("Percentuale:");
panelPercentuale1.add(labelPercentuale);
JPanel panelPercentuale2 = new JPanel();
mainContainer.add(panelPercentuale2);
percentuale = new JTextField();
percentuale.setHorizontalAlignment(SwingConstants.CENTER);
percentuale.setPreferredSize(new Dimension(6, 24));
percentuale.setEditable(false);
percentuale.setColumns(4);
panelPercentuale2.add(percentuale);
percentuale.setBorder(new LineBorder(new Color(0, 0, 0), 0));
//window.setVisible(true);
}
private class clickBottone implements ActionListener {
public void actionPerformed(ActionEvent e){
int p=0,n,c;
float val=1;
try{
n=Integer.valueOf(mazzo.getText() );
c=Integer.valueOf(carte.getText() );
if(n<=60 && c<=n && c>=0){
if(secondo.isSelected()) p=1;
for(int i=0;i<5+p;i++){
val=val*(n-c)/n;
n--;
}
val=Math.round((1-val)*1000);
val/=10;
String str=val+"%";
percentuale.setText(str);
percentuale.setBackground(Color.red);
}else{
JOptionPane.showMessageDialog(null, "Valori inseriti errati");
}
}catch(Exception exc){
JOptionPane.showMessageDialog(null, "Valori inseriti errati");
}
}
}
private class resetBottone implements ActionListener {
public void actionPerformed(ActionEvent e) {
mazzo.setText("");
carte.setText("");
primo.setSelected(true);
percentuale.setBackground(Color.white);
percentuale.setText("");
}
}
}
codice:
public class Principale {
public static void main(String[] args) {
Finestra finestra1 = new Finestra();
finestra1.setVisible(true);
}
}
Già che ci sei se noti qualcosa che faccio che però conviene fare diversamente fammelo notare, vorrei imparare anche lo "stile di scrittura" di un codice.