para el mod: xfas espera unos 2 dias antes de tirar el tema al subforo java, para q allan mas posibilidades de q lo respondan :S
Necesito que al precionar un boton se abra una ventana nueva.
lo que hago hasta el momento es capturar el evento del Boton,
public boolean handleEvent (Event evt2)
{
switch (evt2.id)
{
case Event.WINDOW_DESTROY:
{
System.exit(0);
return true;
}
case Event.ACTION_EVENT:
{
if (evt2.target==boton)
{
guarda();
}
if (evt2.target==botoncito)
{
System.exit(0);
return true;
}
if (evt2.target==factura)
{
//COMO ABRO UNA VENTANA AL PRESIONAR ESTE BOTON
}
}
default:
return false;
}
}
necesito q al presionar el boton factura se abra el archivo 'factura.java' q tiene la estructura de un panel, si no se puede hacer asi, necesito q se abra una ventana nueva.
ojala algn sepa o de pistas concretas
Cada tema en su subforo por favor =P
Supongo que en "factura.java" tendrás una clase que herede de JFrame o algo así, crea un objeto de esa clase y listo.
Man por que no usas swing en netbeans? te aira la vida mas facil con la programacion en ventanas y todo eso....
factura ventana=new factura();
La clase "factura" que has definido debera heredar de algun objeto grafico: JPanel, JFrame, JWindow, etc. (de JPanel no estoy seguro).
Cita de: Morani en 16 Diciembre 2008, 18:35 PM
Man por que no usas swing en netbeans? te aira la vida mas facil con la programacion en ventanas y todo eso....
NetBeans te abstrae de la parte grafica. Si lo que quieres es aprender debes hacerlo manualmente. ::)
al final lo hice con un JInternalFrame, lo q muestra es una ventana en blanco, pero no se como mandar variables internas entre class :xD, algn sabe como?
import java.awt.*;
import java.sql.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
public class num1panel extends JFrame
{
public num1panel(String titulo){
super(titulo);
desktop = new JDesktopPane();//INSTANCIAMOS EL OBJETO
.
.
.
//para abrir ventana nueva al presionar factura
factura.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
crearVentana();
}
});
.
.
.
}//fin num1panel
public void crearVentana(){
Ventana frame = new Ventana();
frame.setVisible(true); //NECESARIO PARA QUE SE MUESTRE
desktop.add(frame);//AGREGO LA NUEVA VENTANA AL CONTENEDOR DE VENTANAS INTERNAS
try{
frame.setSelected(true);
}catch (Exception e) {
JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.OK_OPTION);
}
}//fin crearVentana
.
.
.
}//fin class num1panel
class Ventana extends JInternalFrame{
public static int numVentana = 1;
public static int x = 45, y = 45;
JLabel Regalo2=new JLabel("Regalo ");
//Label Regalo2=new Label("perrroos ");
public Ventana(){
super("Ventana #"+ (numVentana++),//título de la ventana
true, //resizable
true, //closable
true, //maximizable
true);//iconifiable
this.add(Regalo2);
setSize(300, 200); //EL TAMAÑO QUE TENDRA CADA VENTANA INTERNA...
setLocation((x*numVentana)/2, (y*numVentana)/2); //POSICION DE LA VENTANA INTERNA
}//FIN DEL CONSTRUCTOR DE LA CLASE QUE REPRESENTA LAS VENTANAS INTERNAS
}//FIN DE LA CLASE QUE REPRESENTA LAS VENTANAS INTERNAS
La idea es que tengas la parte de datos en una clase y la parte grafica en otra. Entonces, la gui_principal tendria que tener un objeto principal con toda la informacion y los setters y getters necesarios. Luego, si necesitas todos estos datos en un nuevo jframe que deriva de gui_principal, simplemente le pasas como parametro el objeto y listo.