Separar os Eventos da Interface

0 respostas
E

Olá Galera, gostaria de saber se tem como separa os eventos do botão da interface, tenho este código e gostaria de separar os eventos do botão em outra classe, alguem poderia me ajudar, nisso pois sou novo em programacão java. Agradeço.

package br.com.mtc.estatistica;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;

import javax.swing.ImageIcon;
import java.awt.Font;
import javax.swing.JButton;
import javax.swing.JTextArea;
import javax.swing.border.TitledBorder;
import javax.swing.UIManager;


import javax.swing.JRadioButton;

import javax.swing.JScrollPane;
import java.awt.SystemColor;
import java.awt.Toolkit;

import java.text.DecimalFormat;
import java.util.ArrayList;

import java.util.List;
import java.util.Set;
import java.util.TreeMap;
import java.awt.event.ActionEvent;
import javax.swing.JTable;

import javax.swing.JTextField;
import javax.swing.JComboBox;

import javax.swing.DefaultComboBoxModel;
import java.awt.Color;
import javax.swing.AbstractAction;
import javax.swing.Action;

public class Principal extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTable tblDados;
	private static String modelo;
	private DadosTableModel tableModel;
	private JTextField txtVisibilidade;
	JTextArea txtDados = new JTextArea();
	private List<String> classeLista = new ArrayList<String>();
	private final Action btnROL = new btnRol();
	private final Action btnIntervalo = new btnIntervalo();
	JScrollPane scrollPaneTabela = new JScrollPane();
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Principal frame = new Principal();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Principal() {
		super("Principal");
		setResizable(false);
		
		setIconImage(Toolkit.getDefaultToolkit().getImage(Principal.class.getResource("/br/com/mtc/estatistica/iconejanela.png")));
		setTitle("Estat\u00EDstica F\u00E1cil");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 723, 315); //315
		setLocationRelativeTo(null);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);		
		JLabel lblNewLabel = new JLabel("New label");
		lblNewLabel.setIcon(new ImageIcon(Principal.class.getResource("/br/com/mtc/estatistica/icone.png")));
		lblNewLabel.setBounds(10, 15, 131, 270);
		contentPane.add(lblNewLabel);		
		JLabel lblComeceMontandoSua = new JLabel("Comece montando sua tabela de distribui\u00E7\u00E3o de Frequ\u00EAncia");
		lblComeceMontandoSua.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblComeceMontandoSua.setBounds(151, 15, 363, 30);
		contentPane.add(lblComeceMontandoSua);		
		JButton btnAjuda = new JButton("Ajuda");
		btnAjuda.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnAjuda.setBackground(SystemColor.inactiveCaption);
		btnAjuda.setBounds(615, 15, 89, 23);
		contentPane.add(btnAjuda);		
		JPanel panel = new JPanel();
		panel.setForeground(SystemColor.window);
		panel.setBorder(new TitledBorder(UIManager.getBorder("TitledBorder.border"), "Seus dados s\u00E3o:", TitledBorder.LEADING, TitledBorder.TOP, null, SystemColor.windowText));
		panel.setToolTipText("");
		panel.setBounds(151, 209, 553, 64);
		contentPane.add(panel);
		panel.setLayout(null);		
		JRadioButton rdbtnUmaPopulao = new JRadioButton("Uma Popula\u00E7\u00E3o");
		rdbtnUmaPopulao.setFont(rdbtnUmaPopulao.getFont().deriveFont(rdbtnUmaPopulao.getFont().getStyle() & ~Font.BOLD));
		rdbtnUmaPopulao.setBounds(11, 21, 119, 23);
		panel.add(rdbtnUmaPopulao);		
		JRadioButton rdbtnUmaAmostra = new JRadioButton("Uma Amostra");
		rdbtnUmaAmostra.setSelected(true);
		rdbtnUmaAmostra.setFont(rdbtnUmaAmostra.getFont().deriveFont(rdbtnUmaAmostra.getFont().getStyle() & ~Font.BOLD));
		rdbtnUmaAmostra.setBounds(132, 21, 115, 23);
		panel.add(rdbtnUmaAmostra);				
		JButton btnIntervalos = new JButton("Intervalos");
		btnIntervalos.setAction(btnIntervalo);
		btnIntervalos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnIntervalos.setBackground(SystemColor.inactiveCaption);
		btnIntervalos.setBounds(423, 21, 104, 23);
		panel.add(btnIntervalos);		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(151, 56, 553, 142);
		contentPane.add(scrollPane);
		txtDados.setWrapStyleWord(true);
		txtDados.setLineWrap(true);
		txtDados.setText("84;68;55;49;48;56;79;58;59;74;89;67;57;55;54;79;74;59;73;75;84;57;55;54;75;59;56;48;49;68;67;88;74;79;67;89;84;73;75;79;68;74;73;75;79;74;84;87;84;68");
		scrollPane.setViewportView(txtDados);
		JButton btnRol = new JButton("ROL");
		btnRol.setAction(btnROL);
		btnRol.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnRol.setBackground(SystemColor.inactiveCaption);
		btnRol.setBounds(317, 21, 74, 23);
		panel.add(btnRol);
		JPanel panelTabela = new JPanel();
		panelTabela.setBounds(10, 329, 694, 191);
		contentPane.add(panelTabela);
		panelTabela.setLayout(null);
		scrollPaneTabela.setBounds(0, 0, 694, 192);
		panelTabela.add(scrollPaneTabela);		
		JButton btnCalcularDistribuies = new JButton("Calcular Distribui\u00E7\u00F5es");
		btnCalcularDistribuies.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnCalcularDistribuies.setBackground(SystemColor.inactiveCaption);
		btnCalcularDistribuies.setBounds(10, 296, 177, 23);
		contentPane.add(btnCalcularDistribuies);		
		JPanel panel_1 = new JPanel();
		panel_1.setBorder(new TitledBorder(null, "Resultados", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_1.setBounds(10, 531, 421, 97);
		contentPane.add(panel_1);
		panel_1.setLayout(null);		
		JButton btnMdia = new JButton("M\u00E9dia");
		btnMdia.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnMdia.setBackground(SystemColor.inactiveCaption);
		btnMdia.setBounds(21, 24, 120, 23);
		panel_1.add(btnMdia);		
		JButton btnMediana = new JButton("Mediana");
		btnMediana.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnMediana.setBackground(SystemColor.inactiveCaption);
		btnMediana.setBounds(153, 24, 121, 23);
		panel_1.add(btnMediana);		
		JButton btnModa = new JButton("Moda");
		btnModa.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnModa.setBackground(SystemColor.inactiveCaption);
		btnModa.setBounds(284, 24, 120, 23);
		panel_1.add(btnModa);		
		JButton btnDesvioMdio = new JButton("Desvio M\u00E9dio");
		btnDesvioMdio.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnDesvioMdio.setBackground(SystemColor.inactiveCaption);
		btnDesvioMdio.setBounds(21, 58, 120, 23);
		panel_1.add(btnDesvioMdio);		
		JButton btnVarincia = new JButton("Vari\u00E2ncia");
		btnVarincia.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnVarincia.setBackground(SystemColor.inactiveCaption);
		btnVarincia.setBounds(153, 58, 120, 23);
		panel_1.add(btnVarincia);		
		JButton btnDesvioPadro = new JButton("Desvio Padr\u00E3o");
		btnDesvioPadro.setFont(new Font("Tahoma", Font.PLAIN, 12));
		btnDesvioPadro.setBackground(SystemColor.inactiveCaption);
		btnDesvioPadro.setBounds(284, 58, 120, 23);
		panel_1.add(btnDesvioPadro);		
		JPanel panel_2 = new JPanel();
		panel_2.setBorder(new TitledBorder(null, "Medidas de Divisibilidade", TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_2.setBounds(441, 531, 263, 97);
		contentPane.add(panel_2);
		panel_2.setLayout(null);		
		txtVisibilidade = new JTextField();
		txtVisibilidade.setBounds(47, 27, 86, 20);
		panel_2.add(txtVisibilidade);
		txtVisibilidade.setColumns(10);		
		JComboBox cbxVisibilidade = new JComboBox();
		cbxVisibilidade.setBackground(new Color(255, 255, 255));
		cbxVisibilidade.setModel(new DefaultComboBoxModel(new String[] {"Quartil", "Decil", "Percentil"}));
		cbxVisibilidade.setBounds(153, 27, 100, 20);
		panel_2.add(cbxVisibilidade);		
		JLabel lblValor = new JLabel("Valor:");
		lblValor.setFont(lblValor.getFont().deriveFont(lblValor.getFont().getStyle() & ~Font.BOLD));
		lblValor.setBounds(10, 30, 37, 14);
		panel_2.add(lblValor);		
		JButton btnCalcular = new JButton("Calcular");
		btnCalcular.setFont(btnCalcular.getFont().deriveFont(btnCalcular.getFont().getStyle() & ~Font.BOLD));
		btnCalcular.setBackground(SystemColor.inactiveCaption);
		btnCalcular.setBounds(20, 63, 233, 23);
		panel_2.add(btnCalcular);
	}
	
	private JTable getTblDados(){
			tblDados= new JTable();	
			tblDados.setModel(getTableModel());
			System.out.println("getTbldados");
			return tblDados;
	}
	
	private DadosTableModel getTableModel(){
		System.out.println("getTableModelAntes");
		tableModel = new DadosTableModel(criarLista());
		System.out.println("getTableModel");
		return tableModel;
	}
	
	private List<Dados> criarLista(){
		
		String num = txtDados.getText().trim();
		String[] numvar = num.split(";");
		List<Dados> info = new ArrayList<Dados>();
		
		if((num.indexOf(".") != -1) || modelo == "INTERVALO"){  
			  Double[] numeroFloat = new Double[numvar.length];
			   for(int i = 0; i < numvar.length; i++)
			   {
			       numeroFloat[i] = Double.parseDouble(numvar[i]);
			   }
			   
			 TreeMap<String, Integer> lista = contarFrequenciaDouble(numeroFloat);
			 Set<String> teste = lista.keySet();
			 for (String keyc : teste){
				 	Dados val =new Dados();
					val.setClasse(keyc);
					val.setFi(lista.get(keyc));						
					info.add(val);
				
			}
			 
			 
		}  else{
			Integer[] numeroInt = new Integer[numvar.length];
			for(int i = 0; i < numvar.length; i++)
			   {
			       numeroInt[i] = Integer.parseInt(numvar[i]);
			   }
			  TreeMap<Integer, Integer> lista = contarFrequenciaInt(numeroInt);
			  Set<Integer> teste = lista.keySet();
			  for (Integer keyc : teste){
				 	Dados val =new Dados();
					val.setClasse(Integer.toString(keyc));
					val.setFi(lista.get(keyc));						
					info.add(val);
				
			 }
			
		}
			
		return info;
	}
	

	
	private TreeMap contarFrequenciaDouble(Double[] numeroFloat){
		
		TreeMap<Double, Integer> contMap = new TreeMap<Double, Integer>();	

		for(Double var : numeroFloat){
			if(!contMap.containsKey(var)){				
				contMap.put(var, 1);
			}else{
				Integer cont = contMap.get(var);
				cont++;
				contMap.put(var, cont);
			}
			
		}	
	
		double amplitude = (double)contMap.lastKey() - (double)contMap.firstKey();
		int comp = (int) Math.ceil((amplitude / (int)(Math.sqrt(numeroFloat.length))));
		
		TreeMap<Double, Double> classe = new TreeMap<Double, Double>();		
		for(double i = contMap.firstKey(); i <= contMap.lastKey(); i += comp ){
			classe.put(i, (double) (i+comp));
		}
		
		String formatar = (contMap.lastKey()).toString();
		formatar = "%"+formatar.length()+"d";
		
		DecimalFormat df = new DecimalFormat("###.#");
	
		TreeMap<String, Integer> classesFinal = new TreeMap<String, Integer>();		
		Set<Double> setClasse = classe.keySet();	
		for(Double inicio : setClasse){
			int freq  = 0;
			for(Double var : numeroFloat){
				if(var >= inicio && var < classe.get(inicio)){
					freq++;
				}				
			}
			classesFinal.put(df.format(inicio)+" |??? " + df.format((double)classe.get(inicio)),freq);			
		}
		
		return classesFinal;
	
		
	}

	private TreeMap contarFrequenciaInt(Integer[] strArray){
		
		TreeMap<Integer, Integer> contMap = new TreeMap<Integer, Integer>();		
	
		for(Integer var : strArray){
			if(!contMap.containsKey(var)){				
				contMap.put(var, 1);
			}else{
				Integer cont = contMap.get(var);
				cont++;
				contMap.put(var, cont);
			}
			
		}		
	
		return contMap;
					
	}	
	private class btnRol extends AbstractAction {
		public btnRol() {
			putValue(NAME, "ROL");
		}
		public void actionPerformed(ActionEvent e) {
			modelo = "ROL";
			setBounds(100, 100, 723, 660);
			setLocationRelativeTo(null);		  
			scrollPaneTabela.setViewportView(getTblDados());
			System.out.println();
		
		}
	}
	private class btnIntervalo extends AbstractAction {
		public btnIntervalo() {
			putValue(NAME, "Intervalo");
		}
		public void actionPerformed(ActionEvent e) {
			modelo = "INTERVALO";
			setBounds(100, 100, 723, 660);
			setLocationRelativeTo(null);		
			scrollPaneTabela.setViewportView(getTblDados());
			
		}
	}
}
Criado 18 de outubro de 2015
Respostas 0
Participantes 1