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(""); } } }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.codice:public class Principale { public static void main(String[] args) { Finestra finestra1 = new Finestra(); finestra1.setVisible(true); } }

Rispondi quotando

