Foro sobre Java SE > actionlistener y boton
Hola.
Al igual que tú soy un novato en esto de Java pero revisando tu código veo algunas cosillas.
1.- Declaras todos los componentes pero jamás les aplicas el setVisible(true); a la clase Interfaz luego de añadir los componentes.
2.- No habías creado ningún método main..
2.- Eso que quieres hacer si se puede y es muy sencillo...Solo debes crear en la clase interfaz el método main una instancia de la clase ahorcado..y uno de la clase interfaz por cupuesto.
Con eso que te comento ya funciona y la aplicación se ve.. y cuando haces clic en comenzar.. imprime el texto que tienes en el system.out del método actionPerformed
te dejo el código corregido.. ya lo otro es de tu parte.. porque tampoco soy un gurú de java..es mi primer comentario en el foro.. Saludos
*******************Interfaz**********************************import java.awt.GridLayout;
import javax.swing.*;
import java.awt.event.*;
public class Interfaz extends JFrame{
JTextArea cajaImagen;
JTextArea cajaFallos;
JLabel palabra;
JLabel espacio;
JLabel espacio2;
JLabel espacio3;
JLabel espacio4;
JButton comenzar;
String palabrasJuego[] = {"pensativo" + "palabra" + "violencia" + "viento" + "Cascarrabias"};
int contadorErrores = 0;
int palabraJuego;
public Interfaz() {
setSize(350, 350);
setLocationRelativeTo(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(3, 3));
espacio = new JLabel();
espacio2 = new JLabel();
espacio3 = new JLabel();
espacio4 = new JLabel();
palabra = new JLabel();
comenzar = new JButton("Comenzar Partida");
cajaFallos = new JTextArea();
JPanel p2 = new JPanel();
cajaImagen = new JTextArea();
JPanel p3 = new JPanel();
String letrasTeclado[] = {"Q", "w", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Ñ", "Z", "X", "C", "V", "B", "N", "M"};
p3.setLayout(new GridLayout(3, 1));
JPanel p4 = new JPanel();
p4.setLayout(new GridLayout(1, 10));
JPanel p5 = new JPanel();
p5.setLayout(new GridLayout(1, 10));
JPanel p6 = new JPanel();
p6.setLayout(new GridLayout(1, 7));
JButton letras[] = new JButton[27];
for (int c = 0; c < letras.length; c++) {
letras[c] = new JButton();
if (c < 10) {
p4.add(letras[c]);
letras[c].setText(letrasTeclado[c]);
} else if ((c >= 10) && (c < 20)) {
p5.add(letras[c]);
letras[c].setText(letrasTeclado[c]);
} else {
p6.add(letras[c]);
letras[c].setText(letrasTeclado[c]);
}
}
p3.add(p4);
p3.add(p5);
p3.add(p6);
p1.add(cajaImagen);
p1.add(palabra);
p1.add(comenzar);
p1.add(espacio);
p1.add(p3);
p1.add(espacio2);
p1.add(cajaFallos);
p1.add(espacio3);
p1.add(espacio4);
add(p1);
setVisible(true);
}
void addActionListener(JButton comenzar) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
public static void main(String[] args){
Interfaz obj = new Interfaz();
Ahorcado obj2 = new Ahorcado();
}
}
**************************Ahorcado***********************import java.awt.GridLayout;
import javax.swing.*;
import java.awt.event.*;
public class Ahorcado implements ActionListener{
Interfaz ventana = new Interfaz();
String palabrasJuego[] = {"pensativo"+"palabra"+"cielo"+"viento"+"cascarrabias"};
int contadorErrores=0;
int palabraJuego;
public Ahorcado(){
ventana.comenzar.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
Object control=e.getSource();
if (control == ventana.comenzar){
System.out.println("holaaaaa");
}
}
}
Hola buenas, he estado intentando recabar información por internet antes de postear la pregunta pero me ha resultado imposible.
Mi programa sería el juego del ahorcado.
y lo tengo estructurado de esta manera dentro del mismo paquete.
Interfaz, donde tengo colocado toda la parte visual del programa
arranque, donde doy inicio a esa parte visual.
ahorcado, donde tengo pensado que se realice las partes en referencia al juego del ahorcado.
Mi problema es que en en el fichero ahorcado quiero poner el acctionlistener de un botón que está ubicado en el fichero interfaz.
Es posible hacer esto que tengo en mente?
este sería mi codigo del fichero interfaz:
-----------------------------------------------------------------------
public class interfaz extends JFrame {
JTextArea cajaImagen;
JTextArea cajaFallos;
JLabel palabra;
JLabel espacio;
JLabel espacio2;
JLabel espacio3;
JLabel espacio4;
JButton comenzar;
String palabrasJuego[] = {"pensativo" + "palabra" + "violencia" + "viento" + "Cascarrabias"};
int contadorErrores = 0;
int palabraJuego;
public interfaz() {
setSize(350, 350);
setLocationRelativeTo(this);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p1 = new JPanel();
p1.setLayout(new GridLayout(3, 3));
espacio = new JLabel();
espacio2 = new JLabel();
espacio3 = new JLabel();
espacio4 = new JLabel();
palabra = new JLabel();
comenzar = new JButton("Comenzar Partida");
cajaFallos = new JTextArea();
JPanel p2 = new JPanel();
cajaImagen = new JTextArea();
JPanel p3 = new JPanel();
String letrasTeclado[] = {"Q", "w", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D", "F", "G", "H", "J", "K", "L", "Ñ", "Z", "X", "C", "V", "B", "N", "M"};
p3.setLayout(new GridLayout(3, 1));
JPanel p4 = new JPanel();
p4.setLayout(new GridLayout(1, 10));
JPanel p5 = new JPanel();
p5.setLayout(new GridLayout(1, 10));
JPanel p6 = new JPanel();
p6.setLayout(new GridLayout(1, 7));
JButton letras[] = new JButton[27];
for (int c = 0; c < letras.length; c++) {
letras[c] = new JButton();
if (c < 10) {
p4.add(letras[c]);
letras[c].setText(letrasTeclado[c]);
} else if ((c >= 10) && (c < 20)) {
p5.add(letras[c]);
letras[c].setText(letrasTeclado[c]);
} else {
p6.add(letras[c]);
letras[c].setText(letrasTeclado[c]);
}
}
p3.add(p4);
p3.add(p5);
p3.add(p6);
p1.add(cajaImagen);
p1.add(palabra);
p1.add(comenzar);
p1.add(espacio);
p1.add(p3);
p1.add(espacio2);
p1.add(cajaFallos);
p1.add(espacio3);
p1.add(espacio4);
add(p1);
}
void addActionListener(JButton comenzar) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
---------------------------------------------------------------------------------------------------------------
Y este es el fichero ahorcado.
---------------------------------------------------------------------------------------------------------------
public class ahorcado implements ActionListener {
interfaz ventana = new interfaz();
String palabrasJuego[] = {"pensativo"+"palabra"+"cielo"+"viento"+"cascarrabias"};
int contadorErrores=0;
int palabraJuego;
public ahorcado(){
ventana.comenzar.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
Object control=e.getSource();
if (control == ventana.comenzar){
System.out.println("holaaaaa");
}
}
}
------------------------------------------------
Espero no ser muy impreciso en mi explicación.
muchas gracias por vuestra atención.