Problema com JTable

Ola,

Estou com um grande problema aqui, eu tenho estas duas classes, é uma calculadora de IP só que quando ele deve exibir mais de um resultado no JTable ele não consegue e mostra apenas um.
Usei o exemplo 19.5.5.1 subnet 30

[code]IPAddress

//Importação de pacotes necessários
import javax.swing.;
import java.math.
;
import java.util.*;

public class IPAddress
{
//Variáveis de Instância
int oct1,
oct2,
oct3,
oct4,
subrede;
StringTokenizer stringtokenizer, stringtokenizer1;
String classe, subnet;

//Mínimo de bits para subredes A,B,C		     
int  min[]  = new int[3];	

//Máximo de bits para subredes A,B,C		
long max[]  = new long[3];
		
public IPAddress(int oct1, int oct2, int oct3, int oct4, int subrede)
{
	try{	
			//Altera o estado dos Atributos
			this.oct1 = oct1;
			this.oct2 = oct2;
			this.oct3 = oct3;
			this.oct4 = oct4;
			this.subrede = subrede;
			
			//De 0 a 126 classe A sem considerar o 10
			if((oct1>0&&oct1<127)&&(oct1!=10)) classe="A";
			
			//10 Reservado para NAT e Proxy
			if(oct1==10) classe="A Privativo";	
			
			//127 Teste de Interface
			if(oct1==127) classe="LoopBack";	
				
			//De 128 a 191 classe B
			if((oct1>127&&oct1<191)&&(oct1!=172)) classe="B";
			
			//172 Reservado para NAT e Proxy
			if(oct1==172) classe="B Privativo";		
			
			//192 Reservado para NAT e Proxy
			if(oct1==192) classe="C Privativo";
			
			//De 192 a 223 classe C
			if(oct1>192&&oct1<224)	classe="C";
			
			//De 224 a 239 classe D
			if(oct1>223&&oct1<240)	classe="D Experimental";
			
			//De 240 a 254 classe E
			if(oct1>239&&oct1<255)	classe="E Experimental";			
			
			//Ip Invalido
			if(oct1<0&&oct1>254) classe="Inválida";
							
		}
		
		//Se for digitado caractere diferente de numero dispara exceção
		catch( NumberFormatException e )
		{
			JOptionPane.showMessageDialog(null,"Formato de Endereço IP ou Número de Subredes Inválido.","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
		}
}

public String retornarIPClasse()
{	
	//Retorna a classe do IP
	return classe;
}

public int retornarNumDeBitsEmprestados()
{	
	//Variável de Retorno			     
	int i=0, n_bits = 0;
	
	//Máximo de bits para subredes A,B,C
	for(i=0;i<3;i++) max[i] = 30; 			    
	
		 //Classe A
	     min[0] =  8;		     
	     //Classe B
	     min[1] =  16;		     
	     //Classe C
	     min[2] =  24;
	     
	String mskr_subrede_padrao = "255.";		     
			
	//Se não tiver subredes
	if( classe.equals("A")||classe.equals("A Privativo") ) i = 0;	
	if( classe.equals("B")||classe.equals("B Privativo") ) i = 1;		
	if( classe.equals("C")||classe.equals("C Privativo") ) i = 2;
	if( classe.equals("D Experimental")||classe.equals("E Experimental")||classe.equals("LoopBack")||classe.equals("Inválida") ) return 0;
		
	//se subrede <= 0 retorna 0
	if( ( subrede - min[i] ) <= 0 ) return 0;
	
	//se subrede > máximo permitido retorna 0
	if( subrede > max[i] )
	{			
		 JOptionPane.showMessageDialog(null,"" + max[i] + " é o número máximo de bits para subredes classe " + classe + ".","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
		 return 0;
	}
	else
	{
		//bits da subrede - mínimo permitido
		n_bits = subrede - min[i];
	}

	//retorna bits restantes
	return n_bits;
	
}	

public String retornarSubredeAddress()
{
	int 	x=0, 
	    	n_bits = retornarNumDeBitsEmprestados(),
	    	quoc_nbits,
	    	rest_nbits,
	    	msk_comp = 0;
	    		    	
	String 	std_mask = "";
	
	double  i = 0;
					
	if( classe.equals("A")||classe.equals("A Privativo") ) x = 1;
	if( classe.equals("B")||classe.equals("B Privativo") ) x = 2;
	if( classe.equals("C")||classe.equals("C Privativo") ) x = 3;
	if( classe.equals("Loopback") ) return "LoopBack";
	if( classe.equals("Inválida") ) return "Inválida";
	if( classe.equals("D Experimental")||classe.equals("E Experimental") ) return "Experimental";

	
	for( i=0; i<x; i++ ) std_mask += "255.";
	
	if(n_bits<=1)
	{
		if( classe.equals("A")||classe.equals("A Privativo") )
		{
			subnet = std_mask+"0.0.0";
			//System.out.println(subnet);
			
			return   std_mask+"0.0.0";
		}
		if( classe.equals("B")||classe.equals("B Privativo") )
		{
			subnet = std_mask+"0.0";
			//System.out.println(subnet);
			
			return std_mask+"0.0";
		}
		if( classe.equals("C")||classe.equals("C Privativo") )
		{
			subnet = std_mask+"0";
			
			//System.out.println(subnet);				
			return std_mask+"0";
		}
	}
	
	quoc_nbits = n_bits/8;
	rest_nbits = n_bits%8;
	
	std_mask += "";
	
	if( classe.equals("A")||classe.equals("A Privativo")||classe.equals("B")||classe.equals("B Privativo") )
	{
		if( quoc_nbits == 0)
		{				
			for( i=0;i<rest_nbits;i++ ) msk_comp += potencia( 2, 8-i-1 );
			std_mask += ""+msk_comp+"";
			
			if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==0)) std_mask += ".0.0";
			if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==1)) std_mask += ".0";
			if((classe.equals("B")||classe.equals("B Privativo"))&&(quoc_nbits==0)) std_mask += ".0";
			
			subnet = std_mask;
			//System.out.println(subnet);
		}
		else
		{

			for( i=0;i<quoc_nbits;i++ ) std_mask += "255.";
			for( i=0;i<rest_nbits;i++ ) msk_comp += potencia( 2, 8-i-1 );
			std_mask += ""+msk_comp+"";
			if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==0)) std_mask += ".0.0";
			if((classe.equals("A")||classe.equals("A Privativo"))&&(quoc_nbits==1)) std_mask += ".0";
			if((classe.equals("B")||classe.equals("B Privativo"))&&(quoc_nbits==0)) std_mask += ".0";
			
			subnet = std_mask;
			//System.out.println(subnet);
		}
	}
	else
	{
		for( i=0;i<rest_nbits;i++ ) msk_comp += potencia( 2, 8-i-1 );
		std_mask += ""+msk_comp+"";
		
		subnet = std_mask;
		//System.out.println(subnet);
	}
	
	//System.out.println(subnet);
	return std_mask;		
	
}

public double potencia( double base, double expoente )
{
	//Variável de controle
	double retorno=0;
	
	//Se expoente < 2 retorna 1 ou a base
	if( expoente == 0 )	return 1;
	if( expoente == 1 ) return base;
	
	//Se expoente >=2 calcula a potência
	if( expoente >= 2 ) retorno = base * potencia( base, (expoente - 1) );
	
	//retorna resultado
	return retorno;
}	

public String retornarBroadCastAddress()
{
	
	System.out.println("---------------------------------------------------");
	//Índice de controle
	int i = 0, j = 0, valor = 0, contador = 0;
	
	//Num. de bits emprestados para subrede
	int nbits =  retornarNumDeBitsEmprestados();		
	
	//Vetor para partes do end. de rede
	int partes[] = new int[4], 
	//Vetor para partes do end. de rede
	subparte[] = new int[4], 
	//Vetor para partes do binario da parte de subrede <> 255 ou <> 0
	binario[] = new int[8];
	  
	//Recebe endereco de rede como String
	String endrede = retornarEnderecoDeRede(), 
	
	//Recebe endereco de subrede como String
	subr = retornarSubredeAddress(),
	
	//Variável de retorno
	endbroad = "";
	
	if( classe.equals("LoopBack") ) return "LoopBack";
	if( classe.equals("Inválida") ) return "Inválida";
	if( classe.equals("D Experimental")||classe.equals("E Experimental") ) return "Experimental";			
	
	//Instancia separadores de string com o parâmetro ponto
	stringtokenizer = new StringTokenizer( endrede, ".");
	stringtokenizer1 = new StringTokenizer(   subr, ".");
	
	//Separa os quatro octetos
	for(i=0;i<4;i++)
	{
		//Atribui os octetos do end. de rede ao vetor partes
		partes[i] = Integer.parseInt( stringtokenizer.nextToken() );
		//Atribui os octetos do end. de subrede ao vetor subparte
		subparte[i] = Integer.parseInt( stringtokenizer1.nextToken() );
	}		

	//Caso numero de bits emprestados seja menor que 2
	if( nbits < 2 )
	{
		//Retorna endereços de Broadcast Padrão
		if( classe.equals("A")||classe.equals("A Privativo") ) return partes[0]+".255.255.255";
		if( classe.equals("B")||classe.equals("B Privativo") ) return partes[0]+"."+partes[1]+".255.255";
		if( classe.equals("C")||classe.equals("C Privativo") ) return partes[0]+"."+partes[1]+"."+partes[2]+".255";
	}
	
	//Troca os valores 0 para 255 no vetor partes
	//for(i=0;i<4;i++) if( partes[i] == 0 ) partes[i] = 255;

	//Associa os elementos do vetor no formato IPv4
	endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
	
	//Busca o octeto com descrição diferente de 255 do oct4 ao oct1 na subrede
	for(i=3;i>=0;i--) if(subparte[i]==255) break;
		
	//Acrescenta o índice por causa do decremento da repetição acima		
	i++;
	
	System.out.println( "-->" + endbroad );
			
	//caso não existam bits emprestados, então usar-se-á end. de broadcast padrão
	if( nbits < 2 )
	{
		return endbroad;
	}
	else
	{
		if( classe.equals("C")||classe.equals("C Privativo") )
		{
			valor = subparte[i];
			
			if( partes[i] != 0255 )
			{
				while( valor != 0 )
				{
					binario[j] = valor % 2;	
					if(binario[j]==0) contador ++;			
					valor = valor / 2;							
					j++;			
				}
						
				partes[3] += (int) potencia( 2, contador ) - 1;
				System.out.println("-->Funcionou" + partes[3]);
				endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
				return endbroad;
			}
			else
			{

					partes[3] = (int) potencia( 2, nbits ) - 1;
					System.out.println("aqui"+partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;						
			}
		}
		
		if( classe.equals("B")||classe.equals("B Privativo") )
		{
			int z = 0;
			for(z=0;z<3;z++) if(subparte[z]!=255) break;
			
			if(z==2)
			{
				partes[3] = 255;
				valor = subparte[z];
			
				if( partes[i] != 0255 )
				{
					while( valor != 0 )
					{
						binario[j] = valor % 2;	
						if(binario[j]==0) contador ++;			
						valor = valor / 2;							
						j++;			
					}
							
					partes[z] += (int) potencia( 2, contador ) - 1;
					System.out.println("-->Funcionou" + partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;
				}
				else
				{
					partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
					System.out.println("aqui"+partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;					
				}									
				
			}
			else
			{
				valor = subparte[z];
				
				if( partes[i] != 0255 )
				{
					while( valor != 0 )
					{
						binario[j] = valor % 2;	
						if(binario[j]==0) contador ++;			
						valor = valor / 2;							
						j++;			
					}
							
					partes[3] += (int) potencia( 2, contador ) - 1;
					System.out.println("-->Funcionou" + partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;
				}
				else
				{
					partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
					System.out.println("aqui"+partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;					
				}									
				
			} 				
		}

		if( classe.equals("A")||classe.equals("A Privativo") )
		{
			int z = 0;
			for(z=0;z<3;z++) if(subparte[z]!=255) break;
			
			if(z==1)
			{
				partes[2] = 255;
				partes[3] = 255;
				valor = subparte[z];
			
				if( partes[i] != 0255 )
				{
					while( valor != 0 )
					{
						binario[j] = valor % 2;	
						if(binario[j]==0) contador ++;			
						valor = valor / 2;							
						j++;			
					}
							
					partes[z] += (int) potencia( 2, contador ) - 1;
					System.out.println("-->Funcionou" + partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;
				}
				else
				{
					partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
					System.out.println("aqui"+partes[3]);
					endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
					return endbroad;					
				}									
				
			}
			else
			{
				if(z==2)
				{
					partes[3] = 255;						
					valor = subparte[z];
					
					if( partes[i] != 0255 )
					{
						while( valor != 0 )
						{
							binario[j] = valor % 2;	
							if(binario[j]==0) contador ++;			
							valor = valor / 2;							
							j++;			
						}
								
						partes[3] += (int) potencia( 2, contador ) - 1;
						System.out.println("-->Funcionou" + partes[3]);
						endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
						return endbroad;
					}
					else
					{
						partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
						System.out.println("aqui"+partes[3]);
						endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
						return endbroad;					
					}															
				}
				else
				{
					valor = subparte[z];
					if( partes[i] != 0255 )
					{
						while( valor != 0 )
						{
							binario[j] = valor % 2;	
							if(binario[j]==0) contador ++;			
							valor = valor / 2;							
							j++;			
						}
								
						partes[3] += (int) potencia( 2, contador ) - 1;
						System.out.println("-->Funcionou" + partes[3]);
						endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
						return endbroad;
					}
					else
					{
						partes[3] = (int) potencia( 2, (32 - Integer.parseInt(subnet)) ) - 1;
						System.out.println("aqui"+partes[3]);
						endbroad = ""+partes[0]+"."+partes[1]+"."+partes[2]+"."+partes[3]+"";
						return endbroad;					
					}																					
				}					
			} 				
		}		
	}
	return endbroad;
}

public double retornarNumDeHostsValidos()	
{
	//Variáveis de controle
	double 	     x = 0,
			     y = 0,
			     z = 0,
			     w = 0;
	
	int n_bits = retornarNumDeBitsEmprestados(),
		total  = 0, 
	         i = 0;

	if( classe.equals("LoopBack") ) return 0;
	if( classe.equals("Inválida") ) return 0;
	if( classe.equals("D Experimental")||classe.equals("E Experimental") ) return 0;

	//Retorna numero de hosts para subrede padrão nas classes A, B e C.		         
	if((classe.equals("A")||classe.equals("A Privativo"))&&(n_bits<2)) return 16777214;
	if((classe.equals("B")||classe.equals("B Privativo"))&&(n_bits<2)) return 65534;
	if((classe.equals("C")||classe.equals("C Privativo"))&&(n_bits<2)) return 254;
			         
	         
    //System.out.println("n_bits:" + n_bits);
	
	//Define num. mínimo de bits para classes A e B
	if((classe.equals("A")||classe.equals("A Privativo"))) i=8;
	if((classe.equals("B")||classe.equals("B Privativo"))) i=16;
	
	//retorna o num de redes válidas * num de hosts validos por cada rede válida
	if((classe.equals("C")||classe.equals("C Privativo"))) return ((potencia( 2, n_bits )-2)*(potencia( 2, 8-n_bits)-2));

	//32 - minimo de bits da classe		
	x = 32 - i;
	if(x<0) x *= -1;
	//System.out.println("x:" + x);		
	
	//32 - minimo de bits da classe - num. de bits emprestados
	y = x - n_bits;
	if(y<0) y *= -1;
	//System.out.println("y:" + y);

	//Obtém num. de subredes válidas				
	z = ( potencia( 2, y ) - 2 ); 
	//System.out.println( "z:" + z );
	
	//Multiplica pelo num. de hosts válidos por subrede
	w = z * (potencia( 2, n_bits ) - 2 );
	//System.out.println( "w:" + w );
	
	//retorna total de hosts válidos
	return w;
}

public double verificarNumDeSubredes()
{
	//Variáveis de controle
	double retorno;
	
	//Se ( (2 elevado ao num de bits restantes) - 2 ) < 0 atribui 0 ao retorno
	if( (retorno = potencia( 2 , retornarNumDeBitsEmprestados() ) - 2) < 0 ) retorno = 0;
	
	//Retorna num. de subredes
	return retorno;
}

public String retornarEnderecoDeRede()
{
	int i = 0, x = 0,
		octetos[]  = new int[4], 
		bin_rede[] = new int[8],
		bin_mask[] = new int[8],			
		endrede = 0, endmask = 0;
	
	String retorno = "";			

	if( classe.equals("LoopBack") )
	{
		return "LoopBack";
		
	}
	else
	{
		if( classe.equals("D Experimental")||classe.equals("E Experimental") ) 
		{
			return "Experimental";
		}
		else
		{
			if( classe.equals("D Experimental")||classe.equals("E Experimental") )
			{
				return "Experimental";
			}
			else
			{

				stringtokenizer = new StringTokenizer( subnet, ".");
					
				for(i=0;i<8;i++)
				{
					bin_rede[i] = 0;
					bin_mask[i] = 0;
				}
								
				for(i=0;i<4;i++)
				{
					 octetos[i] = Integer.parseInt( stringtokenizer.nextToken() );
					 //System.out.println( octetos[i] );
				}
				
				i=0;
				while(octetos[i]==255) i++;
				
				endmask = octetos[i];
				
				if( i==1 )
				{
					endrede = oct2;
					retorno = ""+oct1+".";
				}
				if( i==2 ) 
				{
					endrede = oct3;
					retorno = ""+oct1+"."+oct2+".";
				}		
				
				if( i==3 )
				{
					endrede = oct4;
					retorno = ""+oct1+"."+oct2+"."+oct3+".";
				}		
				
				//System.out.println( endrede );
				
				x=0;
				while( endrede != 0 )
				{
					bin_rede[7-x] = endrede % 2;
					endrede = endrede/2;			
					//System.out.println("bin_rede" + bin_rede[7-x]);
					x++;
				}
				
				x = 0;
				while( endmask != 0 )
				{		
					bin_mask[7-x] = endmask % 2;
					endmask = endmask/2;
					//System.out.println("bin_mask" + bin_mask[7-x]);			
					x++;
				}
				
				int saida = 0;
				for(x=0;x<7;x++) 
				{
					if(bin_mask[x]==1&&bin_rede[x]==1) saida += potencia( 2, 7 - x);
				}
				
				retorno += saida;
				
				if(i==1) retorno += ".0.0";
				if(i==2) retorno += ".0";
		
				//System.out.println("saida:"+saida);												
			}
		}
	}						
	 									
	return retorno;						
}

}
[/code]

E a outra principal

[code] IPMain

import javax.swing.;
import java.awt.
;
import java.awt.event.;
import java.util.
;

public class IPMain extends JDialog
{

JLabel 		lbl_title 				= new JLabel( "Verificador de IP");
JLabel      lbl_logo 				= new JLabel( new ImageIcon("logo.gif") );
JLabel 		lbl_ipaddress 			= new JLabel( "Endereco IP:" );
JTextField 	txt_oct1 				= new JTextField(3);	
JTextField 	txt_oct2 				= new JTextField(3);	
JTextField 	txt_oct3 				= new JTextField(3);
JTextField 	txt_oct4 				= new JTextField(3);
JLabel	    lbl_subr                = new JLabel("SubRede(Num.Bits):");
JTextField 	txt_subr 				= new JTextField(2);
JButton    	btn_verificar 			= new JButton("Analisar");
JButton    	btn_salvar  			= new JButton("Salvar");
JButton    	btn_fechar    			= new JButton("Fechar"  );
JPanel 		p0, p1, p2, p3, p4, p5, p6, p7;
StringTokenizer stringtokenizer		= null;
IPAddress   ip;

Vector      linhas = new Vector(), linha = new Vector();
Vector		titulo_grid = new Vector();
JTable 		jtable = new JTable(); 
JScrollPane jscrollpane;

Container c_main = getContentPane();	
       	
JLabel     lbl[] = new JLabel[14];
JTextField txt[] = new JTextField[14];
JPanel     pnl[] = new JPanel[6];	
	
public IPMain()
{	
	c_main.setLayout( new BorderLayout() );
	
	p0 = new JPanel();
	p1 = new JPanel();
	p2 = new JPanel();
	p3 = new JPanel();
	p4 = new JPanel();
	p5 = new JPanel();
	p6 = new JPanel();
	p7 = new JPanel();
					
	p0.setLayout( new GridLayout( 2, 1 ) );	
	p1.setLayout( new FlowLayout( FlowLayout.CENTER ) );
	p2.setLayout( new FlowLayout( FlowLayout.CENTER ) );
	p3.setLayout( new GridLayout( 2, 1 ) );
	p4.setLayout( new GridLayout( 7, 4 ) );
	p5.setLayout( new GridLayout( 1, 1 ) );
	p6.setLayout( new GridLayout( 1, 2 ) );		
	p7.setLayout( new FlowLayout( FlowLayout.CENTER ) );

	txt_oct1.setColumns(3);		
	txt_oct1.setHorizontalAlignment( JTextField.CENTER );
	
	txt_oct2.setColumns(3);		
	txt_oct2.setHorizontalAlignment( JTextField.CENTER );

	txt_oct3.setColumns(3);		
	txt_oct3.setHorizontalAlignment( JTextField.CENTER );

	txt_oct4.setColumns(3);		
	txt_oct4.setHorizontalAlignment( JTextField.CENTER );
					
	p1.add( lbl_title );
	p1.add( lbl_logo  );
	
	p2.add( lbl_ipaddress );	
	p2.add( txt_oct1 );
 	p2.add( txt_oct1 );
 	p2.add( txt_oct2 );
 	p2.add( txt_oct3 );
 	p2.add( txt_oct4 );
 	p2.add( lbl_subr );
 	p2.add( txt_subr );

	p2.add( btn_verificar );
	
	p0.add( p1 );
	p0.add( p2 );	
	
	String lbl_rotulos[] = { " Classe:", " Desc.:", " Bits Emprestados:", " Desc.:", " Masc. SubRede:", " Desc.:", " End. de Rede:", " Desc.:", " SubRedes Válidas:", " Desc.:", " Num. Hosts Válidos:", " Desc.:"," Num. Broadcast:", " Desc.:"};
		
	int i=0;				
	for(i=0; i<14; i++)
	{
		lbl[i] = new JLabel( lbl_rotulos[i] );
		txt[i] = new JTextField(11);
		p4.add( lbl[i] );
		p4.add( txt[i] );
	}		
																	
	titulo_grid.addElement("Rede");
	titulo_grid.addElement("Primeiro Host");
	titulo_grid.addElement("Último Host");
	titulo_grid.addElement("BroadCast");
	titulo_grid.addElement("Válido");
	
	int j;
	for(j=0;j<5;j++) linha.addElement("");
	linhas.addElement(linha);
	
	jtable = new JTable( linhas , titulo_grid);
	
	jscrollpane = new JScrollPane( jtable );		
	 		 		
	p6.add( btn_salvar );			
	p6.add( btn_fechar );						
	
	p5.add( jscrollpane );
	
	p3.add( p4 );		
	p3.add( p5 );		
	
	p7.add( p6 );
			
	c_main.add(p0,BorderLayout.NORTH );
	c_main.add(p3,BorderLayout.CENTER);
	c_main.add(p7,BorderLayout.SOUTH );
	
	btn_verificar.addActionListener(
		
		new ActionListener()
		{
			public void actionPerformed( ActionEvent e )
			{
				String oct1, oct2, oct3, oct4, subr;
				linhas.removeAllElements();
				
				oct1 = txt_oct1.getText().trim();
				oct2 = txt_oct2.getText().trim();
				oct3 = txt_oct3.getText().trim();	
				oct4 = txt_oct4.getText().trim();
				subr = txt_subr.getText().trim();	
							
				if( oct1.equals("") || oct2.equals("") || oct3.equals("") || oct4.equals("") )
				{
					System.out.println("IP Inválido");
				}
				else
				{
					if( subr.equals("") ) subr="0";
					
					try{
							int oxt1 = Integer.parseInt(oct1), 
							    oxt2 = Integer.parseInt(oct2), 
							    oxt3 = Integer.parseInt(oct3), 
							    oxt4 = Integer.parseInt(oct4),
							    subx = Integer.parseInt(subr);

							if( ( oxt1> 0 && oxt1<255 )&&
							    ( oxt2>=0 && oxt2<256 )&&
							    ( oxt3>=0 && oxt3<256 )&&
							    ( oxt4>=0 && oxt4<256 )&&
							    ( subx>=0 && subx<=30 ))
							{
								ip = new IPAddress( oxt1,oxt2,oxt3,oxt4,subx);
								
								txt[0].setText( ip.retornarIPClasse() );																		
								txt[2].setText( ""+ip.retornarNumDeBitsEmprestados()+"" );										
								txt[4].setText( ""+ip.retornarSubredeAddress()+"" );										
								txt[6].setText(""+ip.retornarEnderecoDeRede()+"");										
								txt[8].setText( ""+ (int) ip.verificarNumDeSubredes()+"" );										
								txt[10].setText( ""+ (int) ip.retornarNumDeHostsValidos()+"" );										
								txt[12].setText( ""+ ip.retornarBroadCastAddress()+"" );

								//Obtenção do endereço de rede e broadcast
								int oct_rede[]  = new int[4];
								int oct_broad[] = new int[4];
								String primeiro_host="", lst_host="";
								
								//Separar octetos
								StringTokenizer endrede  = new StringTokenizer(ip.retornarEnderecoDeRede(),".");
								StringTokenizer endbroad = new StringTokenizer(ip.retornarBroadCastAddress(),".");
								
								int i=0;
								for( i=0;i<4;i++ )
								{
									oct_rede[i] = Integer.parseInt(endrede.nextToken());
									oct_broad[i] = Integer.parseInt(endbroad.nextToken());
								}
								
								int indice = 0;
								int nbits  = (int) ip.retornarNumDeBitsEmprestados();
								String rede = ip.retornarEnderecoDeRede(),
			  			               broa = ip.retornarBroadCastAddress(),
			  			               classe = ip.retornarIPClasse();
																	
								if( nbits < 2 )
								{													
									linha.removeAllElements();
																													
									primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(oct_rede[3]+1)+"";
								         lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(oct_broad[3]-1)+"";
									
									linha.addElement(rede         );
									linha.addElement(primeiro_host);
									linha.addElement(lst_host     );			
									linha.addElement(broa         );			
									linha.addElement("Válido"     );			
									
									linhas.addElement(linha);					
								}
								else
								{
									int nsubredes = (int) ip.verificarNumDeSubredes() + 2;
									int steps = 0;
									
									if(classe.equals("C")||classe.equals("C Privativo"))
									{
										steps = (int) 8 - ip.retornarNumDeBitsEmprestados();
										steps = (int) ip.potencia( 2, (double) steps );
										System.out.println(steps);
										
										linha.removeAllElements();											
										
										int seq1=0, seq2=steps-1;
										String validade="";
										for( i=0;i<nsubredes;i++ )
										{	
											if(i==0||i==nsubredes-1)
											{
												if(i==0)
												{
													System.out.println("Passou aqui 0");
													
													rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+seq1+"";
													System.out.println("Passou aqui 0: rede:"+rede);
													
													primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(seq1+1)+"";
													System.out.println("Passou aqui 0: 1st:"+primeiro_host);
													
													lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(seq2-1)+"";
													System.out.println("Passou aqui 0: lst:"+lst_host);
													
													broa = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+seq2+"";
													System.out.println("Passou aqui 0: broad:"+broa);
													
													validade="Inválido";
																										
												}
												else
												{
													System.out.println("Passou aqui ultimo");
													
													rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+seq1+"";
													System.out.println("Passou aqui ultimo: rede:"+rede);
													
													primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(seq1+1)+"";
													System.out.println("Passou aqui ultimo: 1st:"+primeiro_host);
													
													lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(seq2-1)+"";
													System.out.println("Passou aqui ultimo: lst:"+lst_host);
													
													broa = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+seq2+"";
													System.out.println("Passou aqui ultimo: brd:"+broa);
													
													validade="Inválido";	
												}
											}
											else
											{
												System.out.println("Passou aqui meio");
												
												rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+seq1+"";
												System.out.println("Passou aqui ultimo: rede:"+rede);
												
												primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(seq1+1)+"";
												System.out.println("Passou aqui ultimo: 1st:"+primeiro_host);
												
												lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(seq2-1)+"";
												System.out.println("Passou aqui ultimo: lst:"+lst_host);
												
												broa = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+seq2+"";
												System.out.println("Passou aqui ultimo: brd:"+broa);
												
												validade="Válido";																					
											}
											
											if(i!=0)
											{
												linha.remove(rede);
												linha.remove(primeiro_host);
												linha.remove(lst_host);
												linha.remove(broa);
												linha.remove(validade);
											}
																					
											linha.addElement(rede);
											linha.addElement(primeiro_host);
											linha.addElement(lst_host);
											linha.addElement(broa);
											linha.addElement(validade);													
												
											linhas.addElement(linha.lastElement());
											
											seq1=seq1+steps;
											seq2=seq2+steps;
										}																													
									}																				
								}
								
								jtable = new JTable( linhas, titulo_grid );
								jscrollpane = new JScrollPane( jtable );
								
								p5.removeAll();
								p5.repaint();
								p5.validate();
								
								p5.add(jscrollpane);
								p5.repaint();
								p5.validate();
						
								c_main.repaint();
								c_main.validate();									
							}
							else
							{
								JOptionPane.showMessageDialog(null,"Formato de Endereço IP ou número de subredes inválido.","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
							}
							
						}
						catch( NumberFormatException ex )
						{
								JOptionPane.showMessageDialog(null,"Formato de Endereço IP Inválido.","IPCalc - Validação", JOptionPane.ERROR_MESSAGE);
						}
						
					}
					
				}

		    });			    

	setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
	setDefaultLookAndFeelDecorated( false );
	setTitle("IPCalc 1.0 - Calculadora IP");
	setResizable( false );
	setSize( 600, 380);		
	show();
}

public static void main(String args[])
{
	IPMain ip = new IPMain();
	ip.addWindowListener( 
	
		new WindowAdapter()
		{
			public void windowClosing( WindowEvent e )
			{
				System.exit(0);
			}
		}	
	
	);					
}	

}

/*

  •  									for( i=0;i<nsubredes;i++ )
     									{				
     										if(i==0||i==nsubredes-1)
     										{																						
     											linha.removeAllElements();																
     											
     											//rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+oct_rede[3]+"";
     											primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(oct_rede[3]+1)+"";
     											lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(oct_broad[3]-1)+"";
     											//broa = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+oct_rede[3]+"";
     											
     											linha.addElement(rede);
     											linha.addElement(primeiro_host);
     											linha.addElement(lst_host);												
     											linha.addElement(broa);																			
     											linha.addElement("Inválido");								
     											
     											oct_rede[3]+=steps;
     										}
     										else
     										{
     											linha.removeAllElements();
     											
     											primeiro_host = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+(oct_rede[3]+1)+"";
     											lst_host = ""+oct_broad[0]+"."+oct_broad[1]+"."+oct_broad[2]+"."+(oct_broad[3]-1)+"";
     											
     											linha.addElement(rede);
     											linha.addElement(primeiro_host);												
     											linha.addElement(lst_host);																							
     											linha.addElement(broa);																																
     											linha.addElement("Válido");																															
     										}
     										
     										oct_rede[3]+=steps;
     										rede = ""+oct_rede[0] +"."+oct_rede[1] +"."+oct_rede[2] +"."+oct_rede[indice]+"";
     										
     										linhas.addElement(linha);											
     									}																						
     								}
    

// if(classe.equals("B")||classe.equals("B Privativo")) indice=2;
// if(classe.equals("A")||classe.equals("A Privativo")) indice=1;
// if(!(classe.equals("D Experimental")||classe.equals("E Experimental")))
// {

// if(classe.equals("C")||classe.equals("C Privativo")) indice=3;
// {

// }

										//se for classe C
								}

*/[/code]

O que pode ser?

Cara, tenta resumir teu problema pra poder ajudar… Tipo:
:arrow: Certifiquese: tá mesmo adicionando ma JTable?
:arrow: Ja deu uns println pra saber se esta no tablemodel?
:arrow: Em que momento aparece apenas uma linha?

Bem, se puder ajudar fica melhor pra te ajudar tb :smiley:

flw!

Zopo,tem umas 1000 linhas aí…(OK,devo tah exagerando…)
Em cada linha vc quer um determinado num de IP eh isso?

[quote=“Ironlynx”]Zopo,tem umas 1000 linhas aí…(OK,devo tah exagerando…)
Em cada linha vc quer um determinado num de IP eh isso?[/quote]

É Isso mesmo.

E ja verifiquei com o println, esta tudo certo pelo menos rodou aqui…

E ai alguem conseguiu???

Zopo,não testei sua aplicação,nem dah para eu ver tudo(o acoplamento aí tah altíssimo…),mas pq vc não grava as linhas(q seria cada IP)num ArrayList igual o brlima faz no tutorial dele…aliás, seria interessante q vc criasse seu TableModel tb…e isolasse um pouco as coisas…