Ayuda urgente, por favor

Milon
17 de Diciembre del 2004
Hola, necesito que alguien me resuelva esto. Resulta que tengo que mostrar la informacion de un vector (atributo de la clase) en un jTextArea. Pues bien, lo he hecho con JInternalFrame para que quedase mejor.
Si ejecuto el codigo desde algun evento asociado a un boton, etc..., se muestra sin problemas, pero si yo hago un método exclusivo tipo "MostrarDatos()" pues no aparece nada, ¿por qué ocurre esto?
Os pongo el codigo de la clase:

package cluster;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;


public class Marco_Principal extends JFrame {


static Posicion[] vector;

private String path_entrada="";
private String path_salida="";
private Clus_Inicio inicio = new Clus_Inicio();
private static float [][] matriz_entrada;
private static float [][] matriz_simil;

JPanel panel_superior = new JPanel();
JMenuBar barra_menu = new JMenuBar();
JMenu m_Archivo = new JMenu();
JMenuItem mi_Abrir = new JMenuItem();
JMenuItem mi_Nuevo = new JMenuItem();
JMenuItem mi_Salir = new JMenuItem();
JMenu m_Ayuda = new JMenu();
JMenuItem jMenuItem4 = new JMenuItem();
JToolBar barra_herr = new JToolBar();
BorderLayout borderLayout1 = new BorderLayout();
JButton B_nuevo = new JButton();

JDesktopPane desktop = new JDesktopPane();
JScrollPane jsDesktop = new JScrollPane(desktop);
JInternalFrame interior = new JInternalFrame("Datos",true,true,true);
JTextArea areatexto = new JTextArea();


ImageIcon image1;
ImageIcon image2;
ImageIcon image3;
JPanel panel_principal = new JPanel();
BorderLayout borderLayout2 = new BorderLayout();
JPanel panel_inferior = new JPanel();
BorderLayout borderLayout3 = new BorderLayout();
TitledBorder titledBorder1;
TitledBorder titledBorder2;
JLabel statusbar = new JLabel();


public Marco_Principal() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception {
titledBorder1 = new TitledBorder("");
titledBorder2 = new TitledBorder("");
panel_superior.setPreferredSize(new Dimension(400, 30));
panel_superior.setLayout(borderLayout1);
image1 = new ImageIcon(cluster.Marco_Cluster.class.getResource("openFile.png"));
image2 = new ImageIcon(cluster.Marco_Cluster.class.getResource("closeFile.png"));
image3 = new ImageIcon(cluster.Marco_Cluster.class.getResource("help.png"));
m_Archivo.setMnemonic('A');
m_Archivo.setText("Archivo");
mi_Abrir.setMnemonic('B');
mi_Abrir.setText("Abrir...");
mi_Abrir.addActionListener(new Marco_Principal_mi_Abrir_actionAdapter(this));
mi_Nuevo.setMnemonic('N');
mi_Nuevo.setText("Nuevo...");
mi_Nuevo.addActionListener(new Marco_Principal_mi_Nuevo_actionAdapter(this));
mi_Salir.setMnemonic('S');
mi_Salir.setText("Salir");
m_Ayuda.setMnemonic('Y');
m_Ayuda.setText("Ayuda");
jMenuItem4.setMnemonic('A');
jMenuItem4.setText("Acerca de");
B_nuevo.setMaximumSize(new Dimension(29, 27));
B_nuevo.setMinimumSize(new Dimension(29, 27));
B_nuevo.setPreferredSize(new Dimension(29, 27));
B_nuevo.setIcon(image1);
B_nuevo.setText("");
B_nuevo.addActionListener(new Marco_Principal_B_nuevo_actionAdapter(this));
panel_principal.setLayout(borderLayout2);
panel_principal.setBorder(null);
panel_principal.setPreferredSize(new Dimension(400, 250));
barra_menu.setDebugGraphicsOptions(0);
this.setFont(new java.awt.Font("SansSerif", 0, 11));
this.setLocale(java.util.Locale.getDefault());
panel_inferior.setBorder(BorderFactory.createLoweredBevelBorder());
panel_inferior.setPreferredSize(new Dimension(10, 20));
panel_inferior.setLayout(borderLayout3);
interior.setBorder(titledBorder1);
interior.addComponentListener(new Marco_Principal_interior_componentAdapter(this));
statusbar.setText("");
panel_superior.add(barra_menu);
this.getContentPane().add(panel_superior, BorderLayout.NORTH);
barra_menu.add(m_Archivo);
barra_menu.add(m_Ayuda);
m_Archivo.add(mi_Abrir);
m_Archivo.add(mi_Nuevo);
m_Archivo.add(mi_Salir);
m_Ayuda.add(jMenuItem4);
panel_superior.add(barra_herr, BorderLayout.NORTH);
this.getContentPane().add(panel_principal, BorderLayout.CENTER);
this.setJMenuBar(barra_menu);
panel_principal.add(jsDesktop, BorderLayout.CENTER);
panel_principal.add(interior, BorderLayout.CENTER);
barra_herr.add(B_nuevo, null);
barra_herr.setFloatable(false);
jsDesktop.getViewport().add(areatexto, null);
interior.getContentPane().add(jsDesktop);
this.getContentPane().add(panel_inferior, BorderLayout.SOUTH);
panel_inferior.add(statusbar, BorderLayout.NORTH);
interior.setDefaultCloseOperation(1);
}

void setVector(Posicion[] v)
{ //Se crea el vector
vector = new Posicion[v.length];
vector = v;
}

void EstadoPantalla(int estado)
{ //Visualiza/Oculta la pantalla de resultados
// 0 = Ocultar
// 1 = Mostrar
if(estado==0)
interior.setVisible(false);
else if(estado==1)
interior.show();
}

void B_nuevo_actionPerformed(ActionEvent e)
{

interior.setVisible(true);
areatexto.setText("");

int max_fila=0;
int max_col=0;
for(int i=0; i < vector.length; i++) //Se busca la cadena mas larga del vector
{
if(vector[i].get_Fila().length() > max_fila)
max_fila = vector[i].get_Fila().length();
if(vector[i].get_Columna().length() > max_col)
max_col = vector[i].get_Columna().length();
}

max_fila += 3; //se añade 3 a la longitud total, para espacios en blanco
max_col += 3;

areatexto.setBackground(Color.white);
areatexto.append("ntVALORES FINALES DEL ESTUDIO CLUSTER:nn");
for(int i=0; i < vector.length; i++)
{
areatexto.append("Cluster: {");
areatexto.append(vector[i].get_Fila()+"}");

// nº blancos = maxima longitud de la fila - longitud de cada fila
int blancos = max_fila - vector[i].get_Fila().length(); //nº de blancos a añadir despues de la "fila"
for(int espacios_fila=0; espacios_fila < blancos; espacios_fila++)
{
areatexto.append(" ");
}
areatexto.append("{"+vector[i].get_Columna()+"}");

// nº blancos = maxima longitud de la columna - longitud de cada columna
blancos = max_col - vector[i].get_Columna().length();//nº de blancos a añadir despues de la "columna"
for(int espacios_col=0; espacios_col < blancos; espacios_col++)
{
areatexto.append(" ");
}

areatexto.append("Valor: "+vector[i].get_Valor()+"n");
}



interior.show();

}


void MuestraDatos()
{
interior.setVisible(true);
areatexto.setText("");

int max_fila=0;
int max_col=0;
for(int i=0; i < vector.length; i++) //Se busca la cadena mas larga del vector
{
if(vector[i].get_Fila().length() > max_fila)
max_fila = vector[i].get_Fila().length();
if(vector[i].get_Columna().length() > max_col)
max_col = vector[i].get_Columna().length();
}

max_fila += 3; //se añade 3 a la longitud total, para espacios en blanco
max_col += 3;

areatexto.setBackground(Color.white);
areatexto.append("ntVALORES FINALES DEL ESTUDIO CLUSTER:nn");
for(int i=0; i < vector.length; i++)
{
areatexto.append("Cluster: {");
areatexto.append(vector[i].get_Fila()+"}");

// nº blancos = maxima longitud de la fila - longitud de cada fila
int blancos = max_fila - vector[i].get_Fila().length(); //nº de blancos a añadir despues de la "fila"
for(int espacios_fila=0; espacios_fila < blancos; espacios_fila++)
{
areatexto.append(" ");
}
areatexto.append("{"+vector[i].get_Columna()+"}");

// nº blancos = maxima longitud de la columna - longitud de cada columna
blancos = max_col - vector[i].get_Columna().length();//nº de blancos a añadir despues de la "columna"
for(int espacios_col=0; espacios_col < blancos; espacios_col++)
{
areatexto.append(" ");
}

areatexto.append("Valor: "+vector[i].get_Valor()+"n");
}

interior.show();


}

void interior_componentHidden(ComponentEvent e) {
statusbar.setText("");
}

void mi_Abrir_actionPerformed(ActionEvent e)
{

}

void mi_Nuevo_actionPerformed(ActionEvent e)
{
Marco_DatosES marco_es = new Marco_DatosES();
Dimension tamanioMarco = marco_es.getPreferredSize();
Dimension tamanioFrm = getSize();
Point loc = getLocation();
marco_es.setLocation((tamanioFrm.width - tamanioMarco.width) / 2 + loc.x, (tamanioFrm.height - tamanioMarco.height) / 2 + loc.y);
marco_es.pack();

marco_es.show();

}
}

class Marco_Principal_B_nuevo_actionAdapter implements java.awt.event.ActionListener {
Marco_Principal adaptee;

Marco_Principal_B_nuevo_actionAdapter(Marco_Principal adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.B_nuevo_actionPerformed(e);
}
}

class Marco_Principal_interior_componentAdapter extends java.awt.event.ComponentAdapter {
Marco_Principal adaptee;

Marco_Principal_interior_componentAdapter(Marco_Principal adaptee) {
this.adaptee = adaptee;
}
public void componentHidden(ComponentEvent e) {
adaptee.interior_componentHidden(e);
}
}

class Marco_Principal_mi_Abrir_actionAdapter implements java.awt.event.ActionListener {
Marco_Principal adaptee;

Marco_Principal_mi_Abrir_actionAdapter(Marco_Principal adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.mi_Abrir_actionPerformed(e);
}
}

class Marco_Principal_mi_Nuevo_actionAdapter implements java.awt.event.ActionListener {
Marco_Principal adaptee;

Marco_Principal_mi_Nuevo_actionAdapter(Marco_Principal adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.mi_Nuevo_actionPerformed(e);
}
}


En el metodo void B_nuevo_actionPerformed(ActionEvent e) funciona todo perfectamente, pero en el método void MuestraDatos() no aparece nada, ni siquiera se visualiza el area de texto, y es el mismo codigo!!

Jes?eyes
17 de Diciembre del 2004
¿Cuando invocas a MuestraDatos? El método del listener es invocado al presionar el botón pero no encuentro en donde llamas a MuestraDatos. Tal vez ese sea el problema, tal vez sea que no busqué bien , o tal vez no publicaste todo el código relacionado con el problema.

Por cierto, tal vez podrías limpiar tu código un poco, ¿no crees?

Jesús

Milon
17 de Diciembre del 2004
Llamo a MuestraDatos desde la clase donde se calculan los mismos, de la forma marco_principal.MuestraDatos();

el metodo donde se realiza esta llamada es este:

public boolean CargaMatrices()
{
if(inicio.Arranque(path_salida,path_entrada))
{

//Se crean las matrices
matriz_entrada = new float[inicio.get_nObservaciones()][inicio.get_nVariables()];
matriz_simil = new float[inicio.get_nObservaciones()][inicio.get_nObservaciones()];

//Se piden las matrices a la clase correspondiente (se cargan)
matriz_entrada = inicio.getMatrizInicial();
matriz_simil = inicio.getMatrizSimil();

//Se pasa el vector de datos finales al marco M_DatosFinales para que lo pueda mostrar

vector = new Posicion[inicio.getPares().length];
vector = inicio.getPares();

marcoprin.setVector(vector);
marcoprin.MuestraDatos();


return true;

}

y "marcoprin" está declarado como atributo de la clase como;
Marco_Principal marcoprin = new Marco_Principal();

Estoy bastante verde en Java, y no se a que te refieres con el metodo" listener". Y por cierto, tampoco se a que te rrefieres con limiar el código, te aseguro que apenas añadí nada, casi todo lo mete el JBuilder.