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.
[code]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());
}
}
}
[/code]