hola buenos dias, tengo un problemilla, y espero me puedan ayudar, estoy haciendo una aplicacion con un jDesktopPane en el cual uso varios jInternalFrame el problema es el siguiente, quiero que estos jInternalFrame no tengan los botones de control(minimizar, maximizar, etc) sino que al momento de ejecutar otro jInternalFrame (a travez de un jButton que tengo en un panel) este ejecute el nuevo jInternalFrame y me cierre u oculte el jInternalFrame anterior, he intentado con el .dispose(), el .hide(), y varios metodos que me he encontrado por ahi pero ninguno me ha funcionado, que me aconsejan que puedo hacer?? es posible hacerlo?? (deberia ser posiblee!!!) o si es necesario cambiar de metodo y pensar en una solucion mejor para la ejecucion de los jInternalFrames.....
mil gracias de antemano
Saludos....
intente llamar el método repaint del JDesktopPane después de darle hide al JInternalFrame
public static int opc1=0, opc2=0, opc3=0;
Form1 frame1 = new Form1();
Form2 frame2 = new Form2();
Form3 frame3 = new Form3();
private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) {
opc1+=1;
if(opc2==1)
{
opc2=0;
frame2.dispose();
}
else if(opc3==1)
{
opc3=0;
frame3.dispose();
}
if(opc1==1)
{
DesktopPane.add(frame1);
try
{
frame1.setMaximum(true);
frame1.setVisible(true);
frame1.setPreferredSize(null);
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "Ha ocurrido algo inesperado...");
}
finally
{
frame1.show();
}
}
}
hola gracias intente con el repaint y no me sirvio, intente nuevamente con el .dispose() y ya los cierra y me funciona, pero al intentar por 3ra vez ya deja de abrir los frames... ke pasara?? este es el codigo ke estoy usando
PHP:public static int opc1=0, opc2=0, opc3=0; Form1 frame1 = new Form1(); Form2 frame2 = new Form2(); Form3 frame3 = new Form3(); private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) { opc1+=1; if(opc2==1) { opc2=0; frame2.dispose(); } else if(opc3==1) { opc3=0; frame3.dispose(); } if(opc1==1) { DesktopPane.add(frame1); try { frame1.setMaximum(true); frame1.setVisible(true); frame1.setPreferredSize(null); } catch(Exception e) { javax.swing.JOptionPane.showMessageDialog(null, "Ha ocurrido algo inesperado..."); } finally { frame1.show(); } } }
ese es el mismo codigo para otros 2 botones que son los que me activan los otros formularios, me funcionan bien hasta cuando oprimo por 3ra vez uno de los botones, estoy usando jToggleButtons los cuales tengo en un group button, la idea es que al presionar uno de los botones se active el formulario y si hay algun otro formulario abierto lo cierre y solo ejecute el que esta referenciado en el boton presionado...no se si me explique.....
Alguien sabe por que mi arreglo me esta mostrando esto
null35
null20
null17
null22
estoy sacando los valores de un string y metiendolos en el arreglo pero me adjunta el null
y no se por que...
Alguien sabe por que mi arreglo me esta mostrando esto
null35
null20
null17
null22
estoy sacando los valores de un string y metiendolos en el arreglo pero me adjunta el null
y no se por que...
y como evento dentro de este frame coloque este codigo:private void formWindowActivated(java.awt.event.WindowEvent evt) {
try
{
inicio.setVisible(true);
inicio.setMaximum(true);
DesktopPane.add(inicio);
DesktopPane.repaint();
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, e);
}
}
private void btn_LoginActionPerformed(java.awt.event.ActionEvent evt) {
if(txt_Login.getText().length()!=0)
{
Connection conexion = null;
Statement sentencia;
ResultSet resultado;
try
{
conexion=DriverManager.getConnection(Conexion.rute,Conexion.user,Conexion.pass);
System.out.println("Connection Ok");
sentencia=conexion.createStatement();
resultado = sentencia.executeQuery("SELECT Password FROM Usuario WHERE Id_Usuario="+txt_Login.getText());
resultado.next();
pass=resultado.getString("Password");
if(pass.equals(txt_Pass.getText()))
{
javax.swing.JOptionPane.showMessageDialog(null, "Bienvenido!");
this.dispose();
Files.Interfaz.DesktopPane.repaint();
}
}
catch(SQLException e)
{
if(conexion != null)
{
try
{
conexion.close();
}
catch(SQLException ex)
{
System.out.println("Error en busqueda");
}
}
javax.swing.JOptionPane.showMessageDialog(null,"No se encontro ningun Usuario con esa cedula", "Espera", javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
else
{
javax.swing.JOptionPane.showMessageDialog(null,"Debes Ingresar una Cedula a buscar", "Espera", javax.swing.JOptionPane.INFORMATION_MESSAGE);
}
}
private void btn_1ActionPerformed(java.awt.event.ActionEvent evt) {
try
{
venta.setVisible(false);
options.setVisible(false);
CheckSit.setVisible(true);
CheckSit.setMaximum(true);
DesktopPane.add(CheckSit);
DesktopPane.repaint();
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "Error en "+e);
}
}
ok, voy a intentar y te digo enseguida
bueno el error de repetir ya se quitó, muchas gracias!! pero aun tengo el de la excepción "java.lang.NullPointerException" y me sale cada vez que ejecuto uno de los frames, y me manda nuevamente al framde de login
este es otro frame ke ejecuto desde uno de los botones de la interfaz principal (la ke contiene el jDesktopPanel) y al presionar el boton sale la excepcion esa... y me manda de nuevo al login
pfff al parecer el problema es por usar el .setMaximum(); existe alguna otra forma de maximizar el frame?
De esa forma me manda en formato dd/mm/yy hh:mm AM/PM
edit: corregí haciendo esto:
jComboBox1.addItem(rs.getString(1).replace(".0", "").trim()); y ya manda sin el .0, pero me esta arrojando java.lang.NullPointerException al consultar.
Consulto de esta forma:
historiac1.setFecha(jComboBox1.getSelectedItem().toString().trim());
javax.swing.JOptionPane.showMessageDialog(null,historiac1.getFecha());
try {
ResultSet rs = con.consultaHistoria(historiac1);
abdomen.setText(rs.getString(21).toUpperCase());
afamiliares.setText(rs.getString(12).toUpperCase());
aobstetras.setText(rs.getString(11).toUpperCase());
apersonales.setText(rs.getString(9).toUpperCase());
quirurgicos.setText(rs.getString(10).toUpperCase());
cardiop.setText(rs.getString(20).toUpperCase());
ccc.setText(rs.getString(18).toUpperCase());
diag.setText(rs.getString(25).toUpperCase());
dir.setText(rs.getString(4).toUpperCase());
extremidades.setText(rs.getString(23).toUpperCase());
fc.setText(rs.getString(14).toUpperCase());
fr.setText(rs.getString(15).toUpperCase());
gentomano.setText(rs.getString(22).toUpperCase());
lab.setText(rs.getString(26).toUpperCase());
mconsulta.setText(rs.getString(8).toUpperCase());
nmadre.setText(rs.getString(7).toUpperCase());
npadre.setText(rs.getString(6).toUpperCase());
peso.setText(rs.getString(16).toUpperCase());
respaciente.setText(rs.getString(3).toUpperCase());
snc.setText(rs.getString(24).toUpperCase());
ta.setText(rs.getString(13).toUpperCase());
talla.setText(rs.getString(17).toUpperCase());
tel.setText(rs.getString(5).toUpperCase());
temp.setText(rs.getString(28).toUpperCase());
torax.setText(rs.getString(19).toUpperCase());
trat.setText(rs.getString(27).toUpperCase());
}
catch(Exception e)
{
javax.swing.JOptionPane.showMessageDialog(null, "Error:"+e);
}
y el método con que consulto es este:
public ResultSet consultaHistoria(medicdoft.beans.historiac h)
{
PreparedStatement ps=null;
ResultSet rs = null;
try
{
ps = c.prepareStatement("select * from historia where cedula="+h.getCod()+", fecha="+h.getFecha()+"");
rs = ps.executeQuery();
while(rs.next())
{
return rs;
}
}catch (Exception ex){
System.out.print("Error al consultar: "+ex);
}
return null;
}
Que estoy haciendo mal?
Cuando le sale al Exception siempre sale el número de línea en la cual ocurre, mire a ver si en esa línea esta accediendo a un objeto al cual no le hayas hecho un = new NombreDeTuClase();
Como cositas adicionales:
1. El acceso de base de datos debe hacerse desde otra clase que no sea la UI (por si quiere cambiar de UI no le toque volver a hacer TODO el programa completo).
2. El nombre de los Objetos deben empezar en minuscula (Cuando accedes a DesktopPane.repaint(); pareciera que estas llamando un método estático de la clase y no al método del objeto).
Revise con un debug que todos los objetos que esta usando tengan un valor distinto de null.
Me cuenta como le va.