Escriba un programa para "adivinar números" en Java: el programa selecciona aleatoriamente un número entero en el rango de 1 a 1000 para que el usuario lo adivine.
Se adjunta el programa fuente Java.
Las características de este programa son:
(1) Sólo se pueden ingresar números puros en el cuadro de texto
(2) La interfaz es hermosa;
(3) El código es más legible y tiene comentarios apropiados;
(4) El formulario se centra en el escritorio tan pronto como aparece.
importar java.awt.*;
importar java.awt.event.*
importar java.util.*; >importar javax.swing.*;
clase pública GuessNumber {
privada estática final larga serialVersionUID = 1L;
marco JFrame;
JTextField txtNum; //Cuadro de texto
JButton btnStart; //Botón
JLabel lblPrompt;
JLabel lblMessage;
static int fuente = 0;
static Random rand = new Random();
public GuessNumber(){
frame = new JFrame("Adivinar número");
JPanel pnl1, pnl2, pnl3, pnl4;
pnl1 = nuevo JPanel();
pnl1.setLayout(new FlowLayout(FlowLayout.LEFT));
pnl2 = nuevo JPanel();
pnl2.setLayout(nuevo FlowLayout(FlowLayout.LEFT));
pnl3 = nuevo JPanel(); p>
p>
pnl3.setLayout(nuevo FlowLayout(FlowLayout.LEFT));
pnl4 = nuevo JPanel();
pnl4.setLayout(nuevo FlowLayout (FlowLayout.LEFT) );
txtNum = nuevo JTextField(10);
btnStart = nuevo JButton("Inicio");
lblPrompt = nuevo JLabel ("lt;htmlgt ;lt;bodygt;Tengo un número entre 1 y 1000, ¿puedes adivinar mi número?lt;br/gt;Por favor, ingresa tu primera suposición.lt;/bodygt;lt;/htmlgt;");
lblMessage = new JLabel();
pnl1.add(lblPrompt);
pnl2.add(txtNum);
pnl3. add(lblMessage);
pnl4.add(btnStart);
frame.setLayout(new GridLayout(4, 1)); pnl1);
p>
marco.add(pnl2);
marco.add(pnl3);
dd(pnl4);
txtNum.addActionListener(this.new TextAction());
txtNum.addKeyListener(this.new KeyAction());
btnStart.addActionListener(this.new ButtonAction());
frame.setSize(400, 200);
frame.setVisible(true); .setLocationRelativeTo(null);
frame.setResizable(false);
}
public static void main(String[] args) {
new GuessNumber();
while((source=rand.nextInt(1000))==0);
}
//Botón Manejo de eventos después de hacer clic
clase ButtonAction implementa ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
JButton btn = (JButton)e.getSource();
if(btn == btnStart){
while((source=rand.nextInt(1000))==0); p>
txtNum.setEditable(true);
}
}
}
//Botón de cuadro de texto Manejo de eventos después del retorno de carro
clase TextAction implementa ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
JTextField txt = ( JTextField)e.getSource();
if(txt != txtNum){
return;
}
int num = Integer.parseInt(txtNum.getText());
if(num == fuente){
lblMessage.setText("¡Correcto!");
txtNum.setEditable(false);
txtNum.setBackground(frame.getBackground());
}
else if(num gt; fuente ){
lblMessage.setText("Demasiado alto");
txtNum.setBackground(Color.red);
}
else{
lblMessage.setText("Demasiado bajo");
txtNum.setBackground(Color.blue);
}
}
}
//Limita el cuadro de texto para ingresar solo números
class KeyAction implementa KeyListener{
@Override
public void keyPressed(KeyEvent e) {
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
int k = e.getKeyChar();
Texto de cadena = ((JTextField)e.getSource()).getText();
if(!((kgt; 47 amp; amp ; k lt; 58) || (k==8 || k==KeyEvent.VK_PERIOD))){ //Limitar solo los números que se ingresarán
e.setKeyChar((char)KeyEvent.VK_CLEAR
}
if(text.length() gt; 4){ //Limitar la longitud del valor
e.setKeyChar((char); )KeyEvent.VK_CLEAR );
}
}
}
}