Olá!
Tenho um código de um jogo ao qual estou desenvolvendo, porém estou tendo alguns problemas que não consigo achar solução devido ao pouco conhecimento que possuo.
Preciso fazer a passagem dos nomes dos jogadores para as telas do jogo e do recorde porém não tenho muita noção de como realizar tal façanha.
Segue código do programa para auxiliar a compreensão.
//janela principal
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.util.*;
public class JanelaPadrao extends JFrame implements ActionListener
{
JButton b1 = new JButton("Selecionar Jogador");
JButton b2 = new JButton("Records");
JButton b3 = new JButton("Sair");
//usados no jDialog
JDialog dNomes = new JDialog();
JLabel lJog1 = new JLabel("Jogador 1:",JLabel.CENTER);
JLabel lJog2 = new JLabel("Jogador 2:",JLabel.CENTER);
JTextField tJogador1 = new JTextField(20);
JTextField tJogador2 = new JTextField(20);
JButton bInicio = new JButton("Iniciar");
String jog1,jog2;//armazenam os nomes dos jogadores
public JanelaPadrao()
{
JFrame frame = new JFrame("Resta - 1");//Titulo da janela
JLabel label = new JLabel("Resta - 1"); // subtitulo em negrito
label.setFont(label.getFont().deriveFont(
label.getFont().getSize2D()));
frame.getContentPane().add(label, BorderLayout.NORTH);
label.setHorizontalAlignment(JLabel.CENTER);
Font labelFont = new Font("Times new roman",Font.BOLD,18);
label.setFont(labelFont);
JPanel buttonPanel = new JPanel();
frame.getContentPane().add(buttonPanel);
//Botões
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
buttonPanel.add(b1);
buttonPanel.add(b2);
buttonPanel.add(b3);
// Saida
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(870, 510);
frame.setVisible(true);
}
// recebe os eventos dos botões
public void actionPerformed(ActionEvent e)
{
if (e.getSource()==b1)
{
chamaDialog();
}
if (e.getSource()==b2)
{
//fazer chamada a tela records
JanelaTempoRecord gnp= new JanelaTempoRecord ();
gnp.show();
}
if (e.getSource()==b3)
{
int resp=JOptionPane.showConfirmDialog(null,"Deseja encerrar a aplicação?","Aviso!",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(resp==JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
//controla acoes do JDialog
if(e.getSource()==bInicio)//verifica se o objeto bInicio foi acionado
{
getNjogador1(jog1); //captura o texto digitado em tJogador 1 e armazena em jog1
getNjogador2(jog2);//captura o texto digitado em tJogador 2 e armazena em jog2
// Alteração1 05/04/2008
if (tJogador1.getText().isEmpty()==false)
{
if (tJogador2.getText().isEmpty()==false)
{
chamaJanelaNivel();
}
}
// fim alteração1 05/04/2008
if (tJogador1.getText().isEmpty())
{
JOptionPane.showMessageDialog(null,"O campo jogador 1 deve ser preenchido!");
//repaint();//atualiza a tela
tJogador1.requestFocus();//da foco ao campo
}
else
if(jog2.isEmpty()==true)
{
int resp = JOptionPane.showConfirmDialog(null,"Jogador 2 não definido. Deseja jogar contra o computador?","Aviso!",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE);
if(resp==JOptionPane.YES_OPTION)
{
tJogador2.setText(jog2="Computador");
chamaJanelaNivel();
//regraPc(); //chama a fucao regra jogo com computador
}
else
if(resp==JOptionPane.NO_OPTION)
{
//repaint();//atualiza a tela
tJogador2.requestFocus();//da foco ao campo
}
else
if(resp==JOptionPane.CANCEL_OPTION)
{
int resp2=JOptionPane.showConfirmDialog(null,"Deseja encerrar a aplicação?","Aviso!",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE);
if(resp2==JOptionPane.YES_OPTION)
{
System.exit(0);
}
}
else
if((tJogador1.getText().isEmpty()==false)&&(tJogador2.getText().isEmpty()==false))
{
chamaJanelaNivel();
}
}
//verifica oque foi armazenado nas variaveis
//JOptionPane.showMessageDialog(null, jog1);
// JOptionPane.showMessageDialog(null, jog2);
}
}
//evento que chama o Dialog
public void chamaDialog()
{
Font labelFont2 = new Font("Courier new",Font.BOLD,18);
Container cp=getContentPane();
cp.setLayout(new BorderLayout());
bInicio.setSize(5,2);//largura e altura do botao
bInicio.addActionListener(this);
JPanel pNomes = new JPanel(new GridLayout(2,2,1,20));
JPanel pAux=new JPanel();
pAux.add(pNomes);
cp.add(pAux,"North");
lJog1.setFont(labelFont2);
lJog2.setFont(labelFont2);
tJogador1.setSize(10, 2);
tJogador2.setSize(10, 2);
//TextField que aceitará no máximo 20 caracteres
tJogador1.setDocument(new FixedLengthDocument(20));
tJogador2.setDocument(new FixedLengthDocument(20));
pNomes.add(lJog1);
pNomes.add(tJogador1);
pNomes.add(lJog2);
pNomes.add(tJogador2);
pAux.add(bInicio,"South");
cp.setVisible(true);
pack(); //joga o conteudo no frame
dNomes.setTitle("Seleção de Jogadores");
dNomes.add(cp);
dNomes.setModal(true);
dNomes.pack();
dNomes.setVisible(true);
}
//captura os nomes digitados nos TextFields
public String getNjogador1(String nJog1)
{
jog1 = tJogador1.getText();//captura o texto digitado em tJogador 1 e armazena em jog1
return jog1;
}
public String getNjogador2(String nJog2)
{
jog2 = tJogador2.getText();//captura o texto digitado em tJogador 1 e armazena em jog1
return jog2;
}
//metodo de chamada para a janela nivel dificuldade
public void chamaJanelaNivel()
{
JanelaNivelDificuldade jn = new JanelaNivelDificuldade();
jn.show();
dNomes.dispose();//fecha o Dialog
}
/*public void passaParametros()
{
JanelaJogador jogo = new JanelaJogador(); //instanciamento da classe Tela2, que é onde você quer passa os nomes
jogo.setJogarContra(this.JogarContra);// mostra se é contra humano ou pc, passa 0 se for humano e 1 se for pc
jogo.setNivel(nivel);// passa o nível de dificuldade
jogo.setJog1(jog1);//nome do jogador 1 sendo passado
jogo.setJog1(jog2);// nome do jogador 2 sendo passado
jogo.JanelaJogador();//metodo onde foi criado a tela (no seu caso esta no construtor, porém acho melhor deixar em ontro metodo, por que é melhor passar os nomes dos jogadores e o nivel antes de chamar o metodo que cria a tela)
}*/
public static void main(String[] args)
{
JanelaPadrao janela = new JanelaPadrao();
}
}
//janela de selecao nivel de dificuldade
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JanelaNivelDificuldade extends JFrame implements ItemListener
{
JLabel lTitulo = new JLabel("Resta 1",JLabel.CENTER);
JRadioButton rNivel1,rNivel2,rNivel3;
ButtonGroup radioGrupo = new ButtonGroup();
public void itemStateChanged(ItemEvent arg0)
{
// alteração2 05/04/2008
if (arg0.getSource()== rNivel1)
{
JanelaNivelDificuldade x= new JanelaNivelDificuldade();
this.setVisible(false);
}
// fim alteração2 05/04/2008
if(arg0.getSource()==rNivel1)
{
//regra();
chamaJanela();
fechaJanela();
}
else
{
if(arg0.getSource()==rNivel2)
{
//regra();
chamaJanela();
fechaJanela();
}
else
{
if(arg0.getSource()==rNivel3)
{
//regra();
chamaJanela();
fechaJanela();
}
}
}
}
public JanelaNivelDificuldade()
{
super("Nível de Dificuldade");
Container cp = getContentPane();
cp.setSize(820,440);
rNivel1 = new JRadioButton("Nível 1"); rNivel1.addItemListener(this);
rNivel2 = new JRadioButton("Nível 2"); rNivel2.addItemListener(this);
rNivel3 = new JRadioButton("Nível 3"); rNivel3.addItemListener(this);
Font radioFont = new Font("Courier new",Font.BOLD,18);
Font labelFont = new Font("Times new roman",Font.BOLD,16);
rNivel1.setFont(radioFont);
rNivel2.setFont(radioFont);
rNivel3.setFont(radioFont);
lTitulo.setFont(labelFont);
radioGrupo.add(rNivel1);
radioGrupo.add(rNivel2);
radioGrupo.add(rNivel3);
rNivel1.setHorizontalAlignment(SwingConstants.CENTER);
rNivel2.setHorizontalAlignment(SwingConstants.CENTER);
rNivel3.setHorizontalAlignment(SwingConstants.CENTER);
cp.setLayout(new BorderLayout());
cp.add(lTitulo,"North");
JPanel pCenter = new JPanel(new GridLayout(3,1,10,10));
pCenter.add(rNivel1);
pCenter.add(rNivel2);
pCenter.add(rNivel3);
cp.add(pCenter,"Center");
cp.setVisible(true);
pack();
}
/*public void facil()
{
if(jogadas == 15)
{
regraPc();
}
}
public void medio()
{
if(jogadas == 10)
{
regraPc();
}
}
public void dificil()
{
if(jogadas == 5)
{
regraPc();
}
}
public void regraPc()
{
vAtual = vAtual-(4-vJog1);
}*/
public void chamaJanela()
{
JanelaJogador jg=new JanelaJogador();
jg.show();
}
public void fechaJanela()
{
JanelaNivelDificuldade jn = new JanelaNivelDificuldade();
jn.setVisible(false);
}
public static void main(String args[])
{
JanelaNivelDificuldade jn = new JanelaNivelDificuldade();
{
jn.show();
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
//import java.util.Date;
public class JanelaJogador extends JFrame implements ActionListener
{
//private static final String computador = null;
Date dt=new Date();
double total;
int vAtual,vJog2,jogadas;
int n=(int) (Math.random()*6+37);
String sn = String.valueOf(n);
JLabel Jogador1,x,Jogador2, Pontuacao;
JTextField Tjogador1,Tjogador2;
JTextArea ta=new JTextArea (43,3);
JScrollPane sp= new JScrollPane(ta);
JButton b1,b2,b3;
JPanel pJogadores;
JPanel Ptitulo;
JLabel TPontuacao;
JLabel Jogador;
String frase;
String frase2;
int y;
String jogador1;
String jogador2;
int l;
boolean valor;
long tempoi;
long tempof;
float tempoTotal;
String horai,horaf;
public JanelaJogador()
{
super("Jogagor X Jogador");
//jogador1 = new JanelaPadrao();
//jogador2 = new JanelaPadrao();
Ptitulo= new JPanel();
Jogador1= new JLabel();
Jogador1.setText("Jogador");
x= new JLabel();
x.setText("x");
x.setHorizontalAlignment(SwingConstants.CENTER);
x.setVerticalAlignment(SwingConstants.CENTER);
Jogador2= new JLabel();
Jogador2.setText("Jogador");
Tjogador1=new JTextField(20);
Tjogador2=new JTextField(20);
//TextField aceitará no máximo 20 caracteres
Tjogador1.setDocument(new FixedLengthDocument(20));
Tjogador2.setDocument(new FixedLengthDocument(20));
Pontuacao=new JLabel();
Pontuacao.setText("Pontuacao");
TPontuacao = new JLabel();
TPontuacao.setText(sn);
JPanel pAux1 = new JPanel(new GridLayout(1,7,10,10));
JPanel pAux2 = new JPanel(new GridLayout(1,1));
JPanel pAux3 = new JPanel(new GridLayout(3,1,30,30));
Jogador=new JLabel();
b1 = new JButton ();
b1.setText("1");
b1.setBounds(50,30,100,30);
b1.setBackground(new Color (0,0,170));
b1.setForeground(Color.WHITE);
b1.setHorizontalAlignment(SwingConstants.CENTER);
b1.setVerticalAlignment(SwingConstants.CENTER);
b1.addActionListener(this);
getContentPane().add(b1);
b2 = new JButton ();
b2.setText("2");
b2.setBounds(50,30,100,30);
b2.setBackground(new Color (0,0,170));
b2.setForeground(Color.WHITE);
b2.setHorizontalAlignment(SwingConstants.CENTER);
b2.setVerticalAlignment(SwingConstants.CENTER);
b2.addActionListener(this);
getContentPane().add(b2);
b3 = new JButton ();
b3.setText("3");
b3.setBounds(50,30,100,50);
b3.setBackground(new Color (0,0,170));
b3.setForeground(Color.WHITE);
b3.setHorizontalAlignment(SwingConstants.CENTER);
b3.setVerticalAlignment(SwingConstants.CENTER);
b3.addActionListener(this);
getContentPane().add(b3);
pAux1.add(Jogador1);
pAux1.add(Tjogador1);
pAux1.add(x);
pAux1.add(Jogador2);
pAux1.add(Tjogador2);
pAux1.add(Pontuacao);
pAux1.add(TPontuacao);
Container cp=getContentPane();
cp.setLayout(new BorderLayout());
Ptitulo.add(pAux1);
cp.add(Ptitulo, "North");
pAux2.add(sp);
cp.add(pAux2,"Center");
JPanel pBotao = new JPanel();
pAux3.add(b1);
pAux3.add(b2);
pAux3.add(b3);
pBotao.add(pAux3);
cp.add(pBotao,"East");
pack();
if (n!=1)
{
frase="Jogador1 " +jogador1 ;
ta.append(""+frase+"");
y=2;
l=1;
setVisible(true);
}
}
/*public void recebeParametros()
{
JanelaPadrao janela = new JanelaPadrao();
// METODO QUE RECEBE O NOME DO JOGADOR 1
public void setJog1(JTextField tJogador1)
{
this.Jogador1.setText(tJogador1.getText());
}
// METODO QUE MOSTRA O NOME DO JOGADOR 1
public String getJog1()
{
return this.Tjogador1.getText();
}
// METODO QUE RECEBE O NOME DO JOGADOR 2
public void setJog2(JTextField tJogador2)
{
this.Tjogador2.setText(tJogador2.getText());
}
// METODO QUE MOSTRA O NOME DO JOGADOR 2
public String getJog2()
{
return this.Tjogador2.getText();
}
}*/
public void actionPerformed(ActionEvent arg0)
{
if(arg0.getSource()==b1)
{
subtrai(1);
}
else
if(arg0.getSource()==b2)
{
subtrai(2);
}
else
if(arg0.getSource()==b3)
{
subtrai(3);
}
//if (jogador2==computador && l==3)
//{
//subtrai(3);
//}
//if (jogador2==computador && l==2)
//{
// subtrai(2);
//l=3;
//}
//if (jogador2==computador && l==1)
//{
// subtrai(1);
// l=2;
//}
}
public void subtrai(int num)
{
if(n > 1)
{
n= n - num;
switch (n)
{
case 3: b3.setEnabled(false);
break;
case 2: b3.setEnabled(false);
b2.setEnabled(false);
break;
case 1:b3.setEnabled(false);
b2.setEnabled(false);
b1.setEnabled(false);
break;
}
frase2=" tirou: " + num + " sobrou = " + n;
ta.append(""+frase2+"\n");
if (n!=1)
{
if (y==1){
frase="Jogador1 " +jogador1 ;
ta.append(""+frase+"");
y=y+1;
setVisible(true);
}
else
{
frase="Jogador2 " +jogador2 ;
ta.append(""+frase+"");
y=y-1;
setVisible(true);
}
}
if(n==1)
{
String hora = ""+dt.getHours()+":"+dt.getMinutes()+dt.getSeconds();
tempof = dt.getTime();
tempoTotal=(tempof-tempoi)/1000;
ta.append("Fim"+tempoTotal+"");
}
}
}
public static void main (String args[])
{
JanelaPadrao jl=new JanelaPadrao();
//setJog1(Tjogador1);
//setJog2(Tjogador2);
Date dt=new Date();
String hora = ""+dt.getHours()+":"+dt.getMinutes()+dt.getSeconds();
long tempoi=dt.getTime();
JanelaJogador jg=new JanelaJogador();
}
}
//janela record
import javax.swing.*;
import java.awt.*;
import java.util.*;
public class JanelaTempoRecord extends JFrame
{
JTextArea ta = new JTextArea(10,25);
JScrollPane sp = new JScrollPane (ta); //barra de rolagem
JPanel ptop;
JLabel ltotal,ltempo,ljogador,ltempojogo;
JLabel jogador1;
JTextField tjogador,ttempojogo;
JTextField nomejogador1,nomejogador2;
String frase;
public JanelaTempoRecord()
{
super ("Tempo Record");
JPanel ptop = new JPanel(new GridLayout(2,1));
ltotal= new JLabel();
ltotal.setText("Total de tempos & records");
ltotal.setSize(350,90);
ltotal.setFont(new Font("Courier new",Font.BOLD,12));
ltotal.setHorizontalAlignment(JLabel.CENTER);
ltempo= new JLabel();
ltempo.setText("Tempo de jogo:[00:00]");
ltempo.setSize(350,90);
ltempo.setFont(new Font("Courier new",Font.BOLD,12));
ltempo.setHorizontalAlignment(JLabel.CENTER);
ljogador=new JLabel();
ljogador.setText("Jogadores");
ljogador.setFont(new Font("Courier new",Font.BOLD,14));
ljogador.setHorizontalAlignment(JLabel.HEIGHT);
ltempojogo=new JLabel();
ltempojogo.setText("Tempo");
ltempojogo.setFont(new Font("Courier new",Font.BOLD,14));
ltempojogo.setHorizontalAlignment(JLabel.RIGHT);
ptop.add(ltotal);
ptop.add(ltempo);
ptop.add(ljogador);
ptop.add(ltempojogo);
Container cp=getContentPane();
cp.setLayout(new BorderLayout());
cp.add(ptop,"North");
cp.add(sp,"Center");
pack();
frase="Lidia";
ta.append(""+frase+"");
ta.setEditable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
/*//Recebe nome do jogador
public void setJogador1(JTextField nomejogador1 )
{
this.jogador1.setText(nomejogador1.getText());
}
//METODO QUE MOSTRA O NOME DO JOGADOR 1
public String getJogador1(){
return this.jogador1.getText();
}
// METODO QUE RECEBE O NOME DO JOGADOR 1
public void setJogador1(JTextField nomejogador1)
{
this.jogador2.setText(nomejogador1.getText());
}
// METODO QUE MOSTRA O NOME DO JOGADOR 1
public String getJogador1(){
return this.jogador1.getText();
*/
public static void main(String[] args)
{
JanelaTempoRecord gnp= new JanelaTempoRecord ();
}
}
Agradeço pela ajuda.