Estoy creando el tablero del juego Serpiente y Escaleras, pero me quede trabada. Ya cree el dado, pero al momento de compilar y que me aparezca la ventana del juego, NO aparece el dado. No se en donde estoy fallando, ya repase el codigo infinidad de veces y no le veo el problema. Espero puedan ayudarme...
Aca el codigo:
Ese es el main
Código PHP:
import javax.swing.JFrame;
public class Proyecto1 {
public static void main(String[] args) {
new Window();
Dado content = new Dado();
}
}
Código PHP:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Window extends JFrame {
JButton JButtonImportar;
JButton JButtonPlay, JButtonPause; // boton de play
JMenuBar barra; // barra de menu principal
JMenu archivo;
JMenuItem inicio, salir;
public Window(){
JButtonImportar = new JButton("Archivos");
JButtonPlay = new JButton("Play");
JButtonPause = new JButton("Pausa");
JButtonPlay.setSize(150,50);
JButtonImportar.setSize(150,50);
JButtonPlay.setLocation(800,100);
JButtonImportar.setLocation(800,20);
this.add(JButtonPlay);
this.add(JButtonImportar);
this.setLayout(null);
barra = new JMenuBar();
archivo = new JMenu("Archivo");
inicio = new JMenuItem("Iniciar");
salir = new JMenuItem("Salir");
setJMenuBar(barra);
barra.add(archivo);
archivo.add(inicio);
archivo.add(salir);
this.setJMenuBar(barra);
this.getContentPane().setBackground(Color.BLACK);
this.setSize(1000,700);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setLocationRelativeTo(null);
this.setVisible(true);
salir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(JOptionPane.showConfirmDialog(null,"¿Está seguro que desea salir del programa?","Salir",JOptionPane.YES_NO_CANCEL_OPTION)==JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
/*inicio.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(dado.isRunning()){
dado.stop();
JButtonPause.setText("Iniciar");
inicio.setText("Iniciar");
}else{
dado.start();
JButtonPause.setText("Pausa");
inicio.setText("Pausa");
}
}
});
JButtonPause.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(dado.isRunning()){
dado.stop();
JButtonPause.setText("Iniciar");
inicio.setText("Iniciar");
}else{
dado.start();
JButtonPause.setText("Pausa");
inicio.setText("Pausa");
}
}
});*/
//Clase Dado
class Dado extends JPanel{
private int dado1 = 1; //El valor inicial del dado.
private Timer timer;
public Dado(){
setLayout(new BorderLayout(2,2));
setBackground(Color.BLUE);
setBorder(BorderFactory.createLineBorder(Color.BLUE,2));
JPanel dicePanel = new JPanel(){
public void paintComponent(Graphics g){
super.paintComponent(g);
drawDado(g, dado1, 100, 100);
}
};
dicePanel.setPreferredSize(new Dimension(300,300));
dicePanel.setBackground(new Color(200,200,255));
add(dicePanel, BorderLayout.CENTER);
JButton lanzar = new JButton("Lanzar");
lanzar.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
roll();
}
});
add(lanzar, BorderLayout.SOUTH);
}
//Dibujar el dado en la posicion especificada
void drawDado(Graphics g, int val, int x, int y){
g.setColor(Color.white);
g.fillRect(x, y, 35, 35);
g.setColor(Color.black);
g.drawRect(x, y, 34, 34);
if (val > 1) //punto superior izquierdo
g.fillOval(x+3, y+3, 10, 10);
if (val > 3) //punto superior derecho
g.fillOval(x+23, y+23, 10, 10);
if (val == 6) //punto medio izquierdo
g.fillOval(x+3, y+13, 10, 10);
if (val % 2 == 1) //punto medio (numeros impares)
g.fillOval(x+23, y+13, 10, 10);
if (val > 3) //punto inferior izquierdo
g.fillOval(x+3, y+23, 10, 10);
if (val > 1) //punto inferior derecho
g.fillOval(x+23, y+23, 10, 10);
}
private void roll(){
if (timer != null)
return;
timer = new Timer(100, new ActionListener(){
int frames = 1;
public void actionPerformed(ActionEvent evt){
dado1 = (int)(Math.random()*6) + 1;
repaint();
frames++;
if (frames == 10){
timer.stop();
timer = null;
}
}
});
timer.start();
}
} //Fin Clase Dado
} //Fin Clase Window
}