2013-08-28 40 views
0

每次我想打开一个新的窗口时,点击一个按钮,我已经使用这个新的JFrame:如何打开而不是使用此

String password = new String(TextoContraseña.getPassword()); 
String nombre = (String)BotonNombreOperario.getSelectedItem(); 
if(!nombre.equals("Seleccione")) { 
    if (Trabajo.validarOperario(nombre,password)) { 
      Inicio.setNombreLogin(nombre); 
      OpcionesOperario rec = new OpcionesOperario(); 
    if (JOptionPane.showConfirmDialog(this,rec,(String)BotonNombreOperario.getSelectedItem(), JOptionPane.DEFAULT_OPTION,JOptionPane.PLAIN_MESSAGE)==JOptionPane.OK_OPTION){ 
      } // this open the new window 
     } else { 
      JOptionPane.showMessageDialog(null, "Contraseña incorrecta"); 
     } 
    } else { 
     JOptionPane.showMessageDialog(null, "Seleccione a un operario"); 
    } 

的事情是,我知道这是不是正确的方式这样做,因为我使用的JOptionPane不用于选择任何选项,而是用于打开一个新窗口。 事情是,我想正确使用JFrame。例如,我改变了“OpcionesOperario”来扩展JFrame而不是扩展JPanel。

而且我在INICIO改变了这种代码

Inicio.setNombreLogin(nombre); 
OpcionesOperario rec = new OpcionesOperario();  
rec.setVisible(true); 
Inicio.super.dispose(); 

但是当我使用rec.setVisible(真)我得到一个错误。我认为是因为我不知道使用JFrame,所以我会很感激一些帮助。我知道这是一种奇怪的做法,这就是为什么我想要改变,因为所有的程序都能很好地工作。


我OpcionesOperario类是:

公共类OpcionesOperario扩展javax.swing.JPanel中{

/** 
* Creates new form OpcionesOperario 
*/ 
String aux; 
boolean realizado = false; 
boolean realizado1 = false; 
boolean realizado2 = false; 
public static String textoImprimible; 
String actividad; 


public OpcionesOperario() { 
    initComponents(); 
    for (Producto p : Trabajo.getProductos()) { 
     jComboBox1.addItem(p.getiD_Producto());  
    } 
    aux=" ---------------------------------------------------------------------\r\n"; 
    aux+="        Listado de Registros\r\n"; 
    aux+=" ---------------------------------------------------------------------\r\n\r\n"; 

    for (Trabajador t : Trabajo.getTrabajadores()) { 
     if ((!t.getTipoEmpleado().equals("Sudo")) && (!t.getTipoEmpleado().equals("Administrador"))) { 
      if (t.getNombre().equals(Inicio.getNombreLogin())) { 
       if (t.isActividadIniciada()){ 
        BotonInicio.setEnabled(false); 
        textoVariante.setText("Actividad en curso..."); 
        actividad = t.getActividad(); 
        jComboBox2.setSelectedItem(actividad); 
        jComboBox2.setEnabled(false); 


       } else { 
        BotonFinal.setEnabled(false); 
        textoVariante.setText("Iniciar para comenzar"); 
        textoVariante.setForeground(Color.red); 
       } 
      } 
     } 
    } 
} 

我有更多的方法,但我不认为这是问题

有用

我得到的问题是:

Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: trabajo/OpcionesOperario$5 
at trabajo.OpcionesOperario.initComponents(OpcionesOperario.java:163) 
at trabajo.OpcionesOperario.<init>(OpcionesOperario.java:40) 
at trabajo.Inicio.BotonOKActionPerformed(Inicio.java:325) 
at trabajo.Inicio.access$500(Inicio.java:24) 
at trabajo.Inicio$6.actionPerformed(Inicio.java:192) 
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) 
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) 
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
at javax.swing.AbstractButton.doClick(AbstractButton.java:376) 
at javax.swing.AbstractButton.doClick(AbstractButton.java:356) 
at trabajo.Inicio$1.actionPerformed(Inicio.java:45) 
at javax.swing.JTextField.fireActionPerformed(JTextField.java:508) 
at javax.swing.JTextField.postActionEvent(JTextField.java:721) 
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:836) 
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1664) 
at javax.swing.JComponent.processKeyBinding(JComponent.java:2879) 
at javax.swing.JComponent.processKeyBindings(JComponent.java:2926) 
at javax.swing.JComponent.processKeyEvent(JComponent.java:2842) 
at java.awt.Component.processEvent(Component.java:6282) 
at java.awt.Container.processEvent(Container.java:2229) 
at java.awt.Component.dispatchEventImpl(Component.java:4861) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Component.dispatchEvent(Component.java:4687) 
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895) 
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762) 
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027) 
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899) 
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727) 
at java.awt.Component.dispatchEventImpl(Component.java:4731) 
at java.awt.Container.dispatchEventImpl(Container.java:2287) 
at java.awt.Window.dispatchEventImpl(Window.java:2719) 
at java.awt.Component.dispatchEvent(Component.java:4687) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723) 
at java.awt.EventQueue.access$200(EventQueue.java:103) 
at java.awt.EventQueue$3.run(EventQueue.java:682) 
at java.awt.EventQueue$3.run(EventQueue.java:680) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) 
at java.awt.EventQueue$4.run(EventQueue.java:696) 
at java.awt.EventQueue$4.run(EventQueue.java:694) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:693) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139) 
at java.awt.EventDispatchThread.run(EventDispatchThread.java:97) 
Caused by: java.lang.ClassNotFoundException: trabajo.OpcionesOperario$5 
at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
... 51 more 

我已经更改为JFrame,并且我仍然在我说“rec.setVisible(true)”的行中遇到问题。我将把主要类的Inicio的构造函数的代码。

public Inicio() { 

    initComponents(); 
    setIconImage(new ImageIcon(getClass().getResource("/Imagenes/Icono.png")).getImage()); // Esto es para cambiar el iconito de java 
    this.centerScreen(this); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //this is new 
    for (Trabajador t : Trabajo.getTrabajadores()) { 
     if ((!t.getTipoEmpleado().equals("Sudo")) && (!t.getTipoEmpleado().equals("Administrador"))) { 
      BotonNombreOperario.addItem(t.getNombre());         //Meter en combobox solo los operarios 
     } 
    } 

    TextoContraseña.addActionListener(new ActionListener() { 
    @Override 
     public void actionPerformed(ActionEvent e) { 
      BotonOK.doClick();              //darle a intro tambien entra 
     } 
    }); 
} 
+0

在这里发布您的OpcionesOperario类的代码。 –

+0

也发布了一条错误消息 – Piro

+0

使用错误和类的代码编辑 – user2647435

回答

1

我认为这个问题是有关NetBeans

试试这个: 转到C:\Users\yourname\.netbeans\yourversion和删除content.Then尝试重新编译。

+0

你用什么来编译? – 2013-08-28 12:31:36

+0

我已经更改为JFrame,并且我仍然在我说“rec.setVisible(true)”的行中遇到问题。我会把Inicio的构造函数的代码放在主类中.----好吧,我认为这是因为OpcionesOperario的构造函数,因为我试图创建一个新的JFrame,它里面没有任何东西,它可以工作,但是使用JFrame像OpcionesOperario里面的东西它不起作用 – user2647435

+0

我使用NetBeans IDE 7.2 – user2647435

相关问题