Java - Problemas con Swing

 
Vista:

Problemas con Swing

Publicado por Oscar (1 intervención) el 12/07/2006 01:25:03
Hola estoy realizando una aplicacion con swing el detalle es que estoy armando un menu en donde le pongo ciertas opciones y llamo a mi clase que tiene como objetivo generar una pantalla en donde el usuario carge algunos datos.

cuando pongo el metodo main en la clase que se llama y corro por separado
me muestra la ventana con las especificaciones pero cuando la llamo de la clase principal no me muestra nada .

este es el fragmento de la clase principal que ejecuta el menu que llama a la clase que no se muestra .

if (cmd.equals("Alta consulta")) {
PantallaConsultas c= new PantallaConsultas();
}
}

y a continuacion les muestro el codigo que muestra la pantalla solo corre por separado y no muestra nada cuando es invocada por la clase Principal

mport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.sql.*;
import java.util.Date;

public class PantallaConsultas extends JPanel {

// declaracion de atributos
// Coneccion conn = new Coneccion();
JLabel LabNombre,LabApellidoPat, LabApellidoMat,LabPeso, LabEstatura, LabPresion,
LabSintomas, LabTratamiento,LabNumeroPac;
JTextField TextNom,
TextApellidoPat, TextApellidoMat,TextNumeroPac,
TextSexo;
JTextArea TextSintomas, TextTratamiento;
JScrollPane PanelSintomas, PanelTratamiento;
JButton BotonOK, BotonCancel;
JFrame frame;
String Nombre, NumeroPac ,Edad,Peso,Estatura,ApellidoPat
,ApellidoMat,Sexo,Signos,Sintoma,Tratamiento;
Statement stmt;
String Num_Cadena;
int num_paso, num_id = 0;

// constructor

PantallaConsultas(){
LabNumeroPac = new JLabel("Numero Paciente:");
LabNombre = new JLabel("Nombre:");
LabApellidoPat = new JLabel("Apellido Paterno:");
LabApellidoMat = new JLabel("Apellido Materno:");
TextNom = new JTextField(5);
TextApellidoPat = new JTextField();
TextApellidoMat = new JTextField();
TextNumeroPac = new JTextField();
TextTratamiento = new JTextArea();
TextSintomas = new JTextArea();
TextSintomas.setEditable(true);
PanelSintomas = new JScrollPane(TextSintomas);
PanelSintomas.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
PanelSintomas.setPreferredSize(new Dimension(250,250));
PanelSintomas.setEnabled(true);
TextNumeroPac.setEditable(false);
TextNumeroPac.setColumns(5);
BotonOK = new JButton("OK");
BotonCancel = new JButton("Cancelar");

JPanel Panel = new JPanel();

Panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();

c.fill = c.BOTH;

c.gridwidth = 1;
c.gridx = 0;
c.gridy = 0;

Panel.add(LabNumeroPac,c);

c.gridwidth = 2;
c.gridx = 1;
c.gridy = 0;

Panel.add(TextNumeroPac,c);

c.gridwidth = 1;
c.gridx = 0;
c.gridy = 1;

Panel.add(LabNombre,c);
c.gridwidth = 2;
c.gridx = 1;
c.gridy = 1;

Panel.add(TextNom,c);
c.gridwidth = 1;
c.gridx = 0;
c.gridy = 2;

Panel.add(LabApellidoPat,c);

c.gridwidth = 2;
c.gridx = 1;
c.gridy = 2;

Panel.add(TextApellidoPat,c);

c.gridwidth = 1;
c.gridx = 0;
c.gridy = 3;

Panel.add(LabApellidoMat,c);

c.gridwidth = 1;
c.gridx = 1;
c.gridy = 3;

Panel.add(TextApellidoMat,c);

c.gridwidth = 2;
c.gridheight = 3;
c.gridx = 1;
c.gridy = 5;

Panel.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Datos Paciente"),
BorderFactory.createEmptyBorder(5,5,5,5)));

JPanel Centro = new JPanel();
Centro.setLayout(new GridBagLayout());
GridBagConstraints y = new GridBagConstraints();

Centro.add(PanelSintomas,y);

y.gridwidth =1;
y.gridx = 0;
y.gridy = 16;

Centro.add(BotonOK,y);

y.gridwidth = 1;
y.gridx = 1;
y.gridy = 16;

Centro.add(BotonCancel,y);
Centro.setBorder(
BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Diagnostico"),
BorderFactory.createEmptyBorder(5,5,5,5)));

setLayout(new BorderLayout());
add(Panel,BorderLayout.EAST);
add(Centro,BorderLayout.WEST);

}
public static void main (String [] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Modulo de Consultas");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new PantallaConsultas());
frame.setSize(800, 400);
frame.setLocation(200,100);
frame.setVisible(true);
frame.pack();
}
}

*****************
Cabe Mencionar que cuando corro por separado la clase PantallaConsultas si me muestra la pantalla con sus Panels y toda la cosa

alguien puede asesorarme con dicha situacion Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con Swing

Publicado por Marco (57 intervenciones) el 13/07/2006 15:14:14
El problema que tienes es que tu clase esta derivada de un JPanel y para llamarlo desde otra clase necesariamente debes introducir el JPanel en un JFrame, esto es lo que hace el bloque de codigo del metodo main de tu clase

JFrame frame = new JFrame("Modulo de Consultas");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new PantallaConsultas());
frame.setSize(800, 400);

creas un Jframe y lo asignas tu panel en el jframe.
Para que llames a tu ventana desde otra clase debes necesriamente colocar crear el jframe y asignarlo al panel
pon el mismo bloque de codigo de tu main o sea:

if (cmd.equals("Alta consulta"))
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Modulo de Consultas");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(new PantallaConsultas());
frame.setSize(800, 400);
frame.setLocation(200,100);
frame.setVisible(true);
frame.pack();
}
}

Otra forma para que te funcione el:
if (cmd.equals("Alta consulta")) {
PantallaConsultas c= new PantallaConsultas();
}
}

es que tu clase herede directamente de un JFrame y no de un JPanel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar