Pessoal primeiro vou explicar meu projeto, assim qualquer duvida que tiver eu pergunta nesse tópico mesmo.
È o seguinte, o professor quer que eu faça uma interface com dois botões, e uma caixa de texto, um botão é o “gerar número aleatório”. Na caixa de texto o usuário vai digitar um numero de 1 a 100, se o número estiver longe do que foi gerado aleatoriamente eu mudo a cor do background da janela para azul simbolizando está frio, se estiver perto eu mudo a cor do background para vermelho simbolizando esta quente. além disso eu tenho que tratar as exceções, se por exemplo o usuário colocar uma letra no lugar de um número ou um número maior que 100.
.
Uma dúvida que surgiu é como eu vou ler oque o usuário colocar no TextField? Eu estava pensando em ler o valor que o usuário colocou no TextField no evento do segundo botão(botão OK). O usuário digita o valor e clica no botão Ok, aí no evento eu pego o número e também comparo com o que foi gerado aleatoriamente. Mais o meu problema é mesmo como pegar o valor digitado. Alguém tem uma dica?
.
Olha como ficou a parte gráfica:
.
http://img816.imageshack.us/img816/4336/jogoadivinhacao.jpg
Olha oque eu fiz até agora no programa:
Esta primeira classe é a interface propriamente dita:
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class AdvinhaNum extends MyActionListener
{
public static void main(String[] args) {
JFrame frame = new JFrame("Jogo: Advinhação");
JPanel pane = new JPanel();
JButton button1 = new JButton("Gerar Número");
JTextField text = new JTextField(4);
/*text.setEnabled(false);*/
JButton button2 = new JButton("OK");
JLabel label = new JLabel("Existe um número de 1 a 100, tente advinhar qual:");
pane.setLayout(new FlowLayout(FlowLayout.CENTER,4,4));
pane.add(button1);
ActionListener listener2 = new MyActionListener();
button2.addActionListener(listener2);
pane.add(label);
pane.add(text);
pane.add(button2);
ActionListener listener = new MyActionListener2();
button1.addActionListener(listener);
pane.setBackground(Color.orange);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(pane);
frame.pack(); frame.setVisible(true);
}
}
Aqui criei duas classes para tratar os eventos:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
public class MyActionListener implements ActionListener {
public static void pegarValorTextField(JTextField text) {
System.out.println(text.getText());
}
public void actionPerformed(ActionEvent event) {
MyActionListener t = new MyActionListener();
t.pegarValorTextField(text);
System.out.println("Está bem frio");
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MyActionListener2 extends NoAleatorio implements ActionListener{
public void actionPerformed(ActionEvent event) {
NoAleatorio N = new NoAleatorio();
N.gerarNoAleatorio();
}
}
Aqui criei uma classe só para gerar um número aleatório:
public class NoAleatorio {
public void gerarNoAleatorio() {
int x = (1 + (int) (Math.random () * 100));
System.out.println( "o número é: "+x);
}
public static void main(String[] args) {
NoAleatorio N = new NoAleatorio();
N.gerarNoAleatorio();
}
}
Como vocês podem ver eu já andei tentando pegar o valor do JTextField criando um método dentro do listener do botão que vai ser pressionado e depois vou comparar o valor do JTextField.
public static void pegarValorTextField(JTextField text) {
System.out.println(text.getText());
Depois criei uma instância:
MyActionListener t = new MyActionListener();
t.pegarValorTextField(text);
Mas nessa linha da erro, o “text” fica dando erro, aparece assim: “text can’t be resolved”
Alguém pode me ajudar pessoal? Como pego o valor do JTextField?