Cual es el error de este codigo, me dice esto al correrto (Error: no se ha encontrado o cargado la clase principal gui101.GUI1)

package gui101;
import javax.swing.*;
import java.awt.event.*;

class ButtonOKListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "OK Button Clicked");
}
}

public class Main extends JFrame {
//
JButton btnOK;
JPanel pnlHolder;
ButtonOKListener btnOKListener;

public Main() {
pnlHolder = new JPanel();
btnOKListener = new ButtonOKListener();

btnOK = new JButton("OK");
btnOK.addActionListener(btnOKListener);

pnlHolder.add(btnOK);
this.add(pnlHolder);
}

public static void main(String[] args) {
Main GUI = new Main();

GUI.setTitle("Graphical User Interface");
GUI.setSize(300, 200);
GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GUI.setVisible(true);
}
}

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Clase principal

La clase principal debe ser Main.java pero tal vez por suposición pienso que guardaste el archivo como ButtonOKListener.java (que es la interface) , por eso no encuentra la clase.

Main.java
 

ButtonOKListener.java
 

Imagen de Adriana_Mendoza_Santillan

Gracias... haber si entendi...

Entonces este codigo (public class Main extends JFrame {) no va hai... y lo que pusiste en ButtonOKListener.java se salva por separado???

Disculpa esque soy muy nueva en esto y me quedan algunas dudas...el Main lo definiste al principio para que lo tome como la clase principal???

por que al cambiar el codigo de la clase somo tu me lo mencionas me aparece algo asi cuando compilo:

init:
Deleting: C:\Users\adriana\Documents\NetBeansProjects\GUI101\build\built-jar.properties
deps-jar:
Updating property file: C:\Users\adriana\Documents\NetBeansProjects\GUI101\build\built-jar.properties
Compiling 1 source file to C:\Users\adriana\Documents\NetBeansProjects\GUI101\build\classes
C:\Users\adriana\Documents\NetBeansProjects\GUI101\src\gui101\Gui101.java:5: error: class Main is public, should be declared in a file named Main.java
public class Main extends JFrame {
1 error
C:\Users\adriana\Documents\NetBeansProjects\GUI101\nbproject\build-impl.xml:628: The following error occurred while executing this line:
C:\Users\adriana\Documents\NetBeansProjects\GUI101\nbproject\build-impl.xml:246: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 seconds)

Mil gracias por la ayuda en verdad te agradezco mucho... :)

Imagen de Jose Manuel

Las clases publicas

Lo que @Sr. Negativo te dice es que seguramente guardaste tu archivo con el nombre ButtonOKListener.java . Cuando tu clase principal ( donde tienes tu método main) es Main.java. Y es así como se debe de llamar tu archivo.

No importa donde coloques el código. Puede estar al inicio o al final. Lo que importa es que si en tu archivo vas a crear mas de una clase, solo una debe ser publica ( public). Y el nombre de tu archivo fuente debe ser el mismo que el de tu clase publica.

El problema aquí surge cuando le has cambiado el nombre de Main a ButtonOKListener, y el compilador detecto que el archivo no tenia el mismo nombre que la clase publica.

Te coloco un ejemplo sencillo. Una clase con un método que imprime un mensaje. Y una segunda clase que crea una instancia de la anterior para utilizar el método.

 
Para poder compilar y ejecutar este código el archivo fuente se debe llamar como la clase publica contenida en el mismo, la cual es LLamarClaseImprimir.
Ciao.

Edito: Ya revise mejor tu salida de compilación. Tu nombre de archivo es Gui101.java . Aquí la linea donde se indica.
C:\Users\adriana\Documents\NetBeansProjects\GUI101\src\gui101\Gui101.java:5: error: class Main is public, should be declared in a file named Main.java. Cambia el nombre Gui101.java por Main.java. Y todo listo.

Imagen de canceriano2500

Prueva

Se que suena un poco tonto pero intenta quitandole el nombre del paquete
package gui101;
luego vuelve ha compilar.
Me havisas si fue eso y suerte

Imagen de Adriana_Mendoza_Santillan

Mmmm no al hacer esto aun

Mmmm no al hacer esto aun manda el mismo mensaje... pero mil gracias

Imagen de Adriana_Mendoza_Santillan

De antemano mil gracias por

De antemano mil gracias por la ayuda, pero aun no quiere correr, cambien el nombre del archivo y verifique lo de las lases que me comentabas deje el codigo de la siguiente manera:

package main;
import javax.swing.*;
import java.awt.event.*;

public class Main extends JFrame {

JButton btnOK;
JPanel pnlHolder;
ButtonOKListener btnOKListener;

class ButtonOKListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "OK Button Clicked");
}
}

public Main() {
pnlHolder = new JPanel();
btnOKListener = new ButtonOKListener();

btnOK = new JButton("OK");
btnOK.addActionListener(btnOKListener);

pnlHolder.add(btnOK);
this.add(pnlHolder);
}

public static void Main(String[] args) {
Main GUI = new Main();

GUI.setTitle("Graphical User Interface");
GUI.setSize(300, 200);
GUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GUI.setVisible(true);
}
}

ya me deja compilarlo sin ningun problema el problema es que cuando lo corro me arroja una ventana que dice

No main classes found

Crees que pueda ser por el nombre del archivo fuente?? el archivo se llama Main.java...

Gracias mil gracias...

Imagen de Sr. Negativo

Error en Swing ... si funciona el código

 

 

Si funciona el código

Compila la primero la clase ButtonOKListener y después la Main.java.

0_o

Imagen de Jose Manuel

Si, pues si corre.

Desde mi comentario anterior, comprobé que el código no tiene ningún error.
Mira, haz lo siguiente.

  • Copia y pega el código que colocaste al inicio del tema. El primero de todos. Ya que el ultimo que has posteado esta mal.
  • Comprueba que el nombre de tu paquete esta bien escrito en tu código fuente. Si no es así, pues lo corriges, es Gui101
  • Que tus dos clases estén en el mismo archivo.
  • El nombre de tu archivo debe ser igual que el nombre de tu clase publica. En este caso, Main.java.
  • Compila y ejecuta. Debe funcionar

Acá, una imagen de como queda.

Uploaded with ImageShack.us

Perdón por la imagen tan grande, pero era para asegurar de que la viera bien @Adriana_Mendoza_santillan.

Como tip, cuando compilas en varios archivos, el ultimo en compilar debe ser el que contiene el método main de la aplicación.