Analise de código de Calculadora de endereço de ip de sub-rede

Olá pessoal blz?

Estou desenvolvendo uma calculadora de endereços de ip de sub-rede e gostaria que vocês dessem uma olhada no meu código para saber como deixar ele mais enxuto. Outra dúvida minha é qual a forma mais correta de se capturar a ação de um botão.

 import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
 * 
 * @author: Phillip Eduardo Pimenta Forte (; Phpimenta ;)
 * 
 */

public class CalculadoraSubRede extends JFrame{
	
	private JTextField octeto1 = new JTextField(3);
	private JTextField octeto2 = new JTextField(3);
	private JTextField octeto3 = new JTextField(3);
	private JTextField octeto4 = new JTextField(3);
	private JTextField numeroSubRede = new JTextField();
	
	public CalculadoraSubRede () {
		
		this.setTitle("Calculadora de Sub-rede de IP");
		
		this.setSize(400, 200);
		
		this.setLocationRelativeTo(null);
		
		this.setResizable(false);
		
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		this.setLayout(new GridBagLayout());
		
		GridBagConstraints cons = new GridBagConstraints();
		
		cons.insets = new Insets(0,10,10,2); // Espaçamento acima, esquerda, abaixo e direita.
		
		cons.gridx = 0; //Coluna
		cons.gridy = 0; //Linha
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		cons.anchor = GridBagConstraints.EAST;
		add(new JLabel("Endereço IP :"), cons);
		
		cons.gridx = 1;
		cons.gridy = 0;
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(octeto1, cons);
		
		cons.gridx = 2; //Coluna
		cons.gridy = 0; //Linha
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(new JLabel("."), cons);		
		
		cons.gridx = 3;
		cons.gridy = 0;
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(octeto2, cons);
		
		cons.gridx = 4; //Coluna
		cons.gridy = 0; //Linha
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(new JLabel("."), cons);		
		
		cons.gridx = 5;
		cons.gridy = 0;
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(octeto3, cons);
		
		cons.gridx = 6; //Coluna
		cons.gridy = 0; //Linha
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(new JLabel("."), cons);		
		
		cons.gridx = 7;
		cons.gridy = 0;
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(octeto4, cons);	
		
		cons.gridx = 0; //Coluna
		cons.gridy = 1; //Linha
		cons.gridwidth = 1; //Número de Colunas Ocupadas
		add(new JLabel("Nº de Sub-Redes :"), cons);
		
		cons.gridx = 1;
		cons.gridy = 1;
		cons.gridwidth = 3; //Número de Colunas Ocupadas
		cons.fill = GridBagConstraints.BOTH;
		add(numeroSubRede, cons);	
		
		cons.gridx = 1;
		cons.gridy = 2;
		cons.gridwidth = 3; //Número de Colunas Ocupadas
		JButton calcular = new JButton("Calcular");
		calcular.addActionListener( new Buttons () );
		add(calcular, cons);	
		
		cons.gridx = 4;
		cons.gridy = 2;
		cons.gridwidth = 3; //Número de Colunas Ocupadas
		JButton limpar = new JButton("Limpar");
		limpar.addActionListener( new Buttons () );
		add(limpar, cons);
		
		cons.gridx = 0; //Coluna
		cons.gridy = 3; //Linha
		cons.gridwidth = 2; //Número de Colunas Ocupadas
		add(new JLabel("Classe do IP :"), cons);
		
		this.setVisible(true);
	}
	
	private class Buttons implements ActionListener {
		
		public void actionPerformed ( ActionEvent event ) {
			
			if (event.getActionCommand().equals("Calcular")) {
				
				if ( octeto1.getText().equals("") || octeto2.getText().equals("")
					 || octeto3.getText().equals("") || octeto4.getText().equals("") || numeroSubRede.getText().equals("") ) {
					
					JOptionPane.showMessageDialog(null, "Todos os campos devem estar preenchidos.");
				} else {
					
					String valorOcteto1 = octeto1.getText();
					
					int x = Integer.parseInt(valorOcteto1);		
				}	
			}
			
			if (event.getActionCommand().equals("Limpar")) {
				
				int resposta = JOptionPane.showConfirmDialog(null, "Tem certeza que desejar limpar o formulário?");
					
				/*
				 * 0  YES_OPTION  	- ao clicar no botão Yes (sim)
				 * 1 	NO_OPTION 		- ao clicar no botão No (não)
				 * 2 	CANCEL_OPTION 	- ao clicar no botão Cancel (cancelar)
				 */
					
				if ( resposta == 0 ) {
					octeto1.setText(null);
					octeto2.setText(null);
					octeto3.setText(null);
					octeto4.setText(null);
					numeroSubRede.setText(null);
				}
			}
		}
	}

	public static void main(String[] args) {
		new CalculadoraSubRede();
	}
}