Boa noite pessoal, estou com um problema…No código abaixo eu criei um JTextField e um botão “Criar Bolinhas”, para o usuário digitar no campo do JTextField o número de bolinhas que ele deseja incluir e posteriormente clicando no botão “Criar Bolinhas” as bolinhas aparecer na tela em CONDIÇÕES ALEATÓRIAS. Mas como é que eu faço isso? Essa parte de relacionar o que o usuário escreveu no JTextField com o botão. Obrigado.
Aqui está a classe Bola
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
/**
* @author Alisson A classe bola é um componente para ser pintada em qualquer
* janela. A bola controla sua posição e orientação em relação a janela
* que estiver sendo pintada. @direitos reservados
*/
public class Bola extends JPanel {
private int x = 50, y = 150, direcaoX = 1, direcaoY = 1, tamanho = 30;
private int ALTURA = 360; // Limite da janela (igual do JogoPainel)
private int LARGURA = 400; // Limite da janela (igual do JogoPainel)
private Color cor = Color.WHITE; // Cores para a bolinha (WHITE, GREEN,
// BLACK, BLUE, RED)
public Bola(int x, int y, int direcaoX, int direcaoY) {
super();
// Usando os metodos set para testar os limites dos valores
this.setX(x);
this.setY(y);
this.setDirecaoX(direcaoX);
this.setDirecaoY(direcaoY);
}
public Bola() {}
public void paintComponent(Graphics g) {
super.paintComponent(g); // Pinta o fundo da tela
g.setColor(cor); // Cor da bola
g.fillOval(x, y, tamanho, tamanho); // Pinta a bola nas posições x e y
// Com largura e altura.
}
public void moveBola() {
// Trata os limites da tela
if (x >= LARGURA - tamanho) {
direcaoX = -1;
} else if (x <= 0) {
direcaoX = 1;
}
if (y >= ALTURA - tamanho) {
direcaoY = -1;
} else if (y <= 0) {
direcaoY = 1;
}
x += direcaoX; // Acrescenta 1 ou -1 conforme valor da direção
y += direcaoY; // Acrescenta 1 ou -1 conforme valor da direção
}
public int getX() {
return x;
}
public void setX(int x) {
if (x < LARGURA + tamanho) {
this.x = x;
}
}
public int getY() {
return y;
}
public void setY(int y) {
if (y < ALTURA + tamanho) {
this.y = y;
}
}
public int getDirecaoX() {
return direcaoX;
}
public void setDirecaoX(int direcaoX) {
if ((direcaoX == 1) || (direcaoX == -1)) { // '||' == 'ou' == 'or'. '&&'
// == 'e' == 'and'
this.direcaoX = direcaoX;
}
}
public int getDirecaoY() {
return direcaoY;
}
public void setDirecaoY(int direcaoY) {
if ((direcaoX == 1) || (direcaoX == -1)) {
this.direcaoY = direcaoY;
}
}
public int getTamanho() {
return tamanho;
}
public void setTamanho(int tamanho) {
if ((tamanho < ALTURA) && (tamanho < LARGURA)) {
this.tamanho = tamanho;
}
}
public int getALTURA() {
return ALTURA;
}
public void setALTURA(int aLTURA) {
ALTURA = aLTURA;
}
public int getLARGURA() {
return LARGURA;
}
public void setLARGURA(int lARGURA) {
LARGURA = lARGURA;
}
public Color getCor() {
return cor;
}
public void setCor(Color cor) {
this.cor = cor;
}
}
E aqui a classe JogoPainel
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Random;
/**
* @author Alisson Classe que desenha a janela do jogo. Necessária para pintar
* os objetos que serão acrescentados na janela.
*
*/
public class JogoPainel extends JPanel implements Runnable { //Implements ActionListener
public JButton botao,button; //
public JTextField campo;
private static final int LARGURA = 400; // Largura da janela
private static final int ALTURA = 400; // Altura da janela
private Thread animacao; // Controla a chamada de run
private int tempoEspera = 12; // Tempo entre uma pintura da tela e outra
private boolean rodando = true; // Define se está ou não rodando
Bola bola = new Bola(30, ALTURA - 30, 1, 1); // Cria a bola
public JogoPainel() {
setBackground(Color.BLACK);
setLayout(new BorderLayout());
setPreferredSize(new Dimension(LARGURA, ALTURA));
campo = new JTextField(10);
botao = new JButton("Play/Pause"); //Cria um botao @2B
botao.addActionListener(new ActionListener(){ //Dá ação ao botão @2B
//botao "play/pause";
public void actionPerformed(ActionEvent e){
// Determina que quando pressionado o botao, ele executará uma ação
if(rodando){
rodando=false;
}else {
rodando=true;
}
}
});
//botao criar bolinhas
button = new JButton("Criar Bolinha");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
//implementação
}
});
//Adiciona os botoes ao painel
JPanel painel = new JPanel(); //Cria um painel @author 2B
painel.add(botao, BorderLayout.SOUTH);
painel.add(button, BorderLayout.SOUTH); //Adiciona o botao ao painel na parte Sul da tela @2B
painel.add(campo, BorderLayout.SOUTH);
add(painel, BorderLayout.SOUTH); //Adiciona o painel na parte Sul da tela @2B
}
/*
* Quando a janela aparece (addNotify) chama iniciarJogo
*/
public void addNotify() {
super.addNotify();
iniciarJogo();
}
private void iniciarJogo() {
if (animacao == null || !rodando) {
animacao = new Thread(this);
animacao.start();
}
}
/*
* Roda a animação da bola
*/
public void run() {
while (true) { // loop do jogo para sempre
if (rodando) {
bola.moveBola(); // Chama para mover a bola
repaint(); // Pede para repitar a bola
}
try { // Inicia o tratamento de evento(erro)
Thread.sleep(tempoEspera);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/*
* Pinta a tela (super) e os componentes (bolas)
*/
public void paintComponent(Graphics g) {
super.paintComponent(g); // Repinta a tela
bola.paintComponent(g); // Repinta os componentes
}
public static void main(String args[]) {
JogoPainel jogoPainel = new JogoPainel(); // Cria a janela JogoPainel;
JFrame jogo = new JFrame("Tutorial"); // Cria a moldura
jogo.add(jogoPainel); // Adicina a moldura jogo a janela jogoPainel
jogo.pack(); // Alinha a janela na moldura
jogo.setVisible(true); // Torna a janela visível.
// Fecha o programa ao clicar no x da janela
jogo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}