我如何将ActionEvents转到另一个类?

问题描述 投票:0回答:1

从这里我想完成的工作是一个游戏手册模拟器应用程序,到目前为止,我一直在使用NetBeans构建所有Jframes,因为它具有菜鸟友好的方法。

这里是我的问题,这是我的“书”课,它讲述了故事,并为玩家提供了可能选择进步的可能选择。它还生成主游戏屏幕并传递到所有值,例如JTEXT(历史记录)和Jlabels(例如玩家名称,生活...)。

package estrutura; public class LivroTeste extends Livro { public LivroTeste(Jogador jogador) { super(null, null); } public void iniciarHistoria(Jogador jogador) { T_Jogo jogo = new T_Jogo(jogador); jogo.setVisible(true); System.out.println("NOME DO PUTO: " + jogador.getNome()); Encontro i = new Encontro("Você está no fluxo e avista o José no grau, " + "você sabe o que ele quer?"); jogo.printEncontro(i.getDescricao()); i.addEscolhas("Ele quer pau, pau, pau, pau, ele quer pau..."); i.addEscolhas("O Zé quer upar!"); i.addEscolhas("Ele quer Shirlar!"); i.addEscolhas("Nenhuma das anteriores."); jogo.add0(i.getEscolhas().get(0)); jogo.add1(i.getEscolhas().get(1)); jogo.add2(i.getEscolhas().get(2)); jogo.add3(i.getEscolhas().get(3)); System.out.println("CHEGOU AQUI!"); } public void floresta1(Jogador jogador) { Encontro f1 = new Encontro(jogador.getNome() + " segue pela floresta..."); } public void rio1(Jogador jogador) { Encontro r1 = new Encontro("Você avista o rio e começa a caminhar pela margem..."); } }

T_Jogo()是一个Jframe类型类,是Jogo我的主屏幕,在Livrojogo内部初始化:

package estrutura; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JOptionPane; public class T_Jogo extends javax.swing.JFrame implements ActionListener { /** * Creates new form T_Jogo */ public T_Jogo() { initComponents(); this.setResizable(false); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2); } public T_Jogo(Jogador jogador) { initComponents(); //Centraliza janela e desabilita botão maximizar this.setResizable(false); Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2); jTextArea1.setEditable(false); jTextArea1.setLineWrap(true); jButton1.addActionListener(this); jButton2.addActionListener(this); jButton3.addActionListener(this); jButton4.addActionListener(this); jLabel1.setText(jogador.getNome()); jLabel5.setText(Integer.toString(jogador.getVida())); jLabel6.setText(Integer.toString(jogador.getAtaque())); jLabel7.setText(Integer.toString(jogador.getPericia())); } . . . public void actionPerformed(ActionEvent e) { if(e.getSource() == jButton1) JOptionPane.showMessageDialog(this, "Botão 1"); else if(e.getSource() == jButton2) JOptionPane.showMessageDialog(this, "Botão 2"); else if(e.getSource() == jButton3) JOptionPane.showMessageDialog(this, "Botão 3"); else if(e.getSource() == jButton4) JOptionPane.showMessageDialog(this, "Botão 4"); } public void printEncontro(String texto) { jTextArea1.setText(texto); } public void add0(String texto) { opcao1.setText(texto); } public void add1(String texto) { opcao2.setText(texto); } public void add2(String texto) { opcao3.setText(texto); } public void add3(String texto) { opcao4.setText(texto); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(T_Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(T_Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(T_Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(T_Jogo.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new T_Jogo().setVisible(true); } }); }

我面临的麻烦试图捕获玩家按下的jbutton(游戏选择),因为我的窗口是由Netbeans生成的,并且按钮方法都是私有的,我无法更改。我需要能够根据玩家选择的内容来确定从LivRoteste类中按下哪个是从Livroteste类中按下的,并且可以控制所有文本,历史记录和选择。 cone,请任何人都可以指导我实现这一目标的最佳方法?预先感谢
	

步长1:修改

LivroTeste

T_Jogo
java swing netbeans actionevent
1个回答
0
投票

步长2:修改如下:

(a)在

T_Jogo

中创建一个实例变量,例如:

  private LivroTeste livroTeste;

(b)修改构造函数

T_Jogo(Jogador jogador)
接受更多参数,以便它变为:

  public T_Jogo(Jogador jogador, LivroTeste livroTeste) {
    this.livroTeste = livroTeste;
    initComponents();

    //Centraliza janela e desabilita botão maximizar
    this.setResizable(false);
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
    this.setLocation(dim.width/2-this.getSize().width/2, dim.height/2-this.getSize().height/2);

    jTextArea1.setEditable(false);
    jTextArea1.setLineWrap(true);

    jButton1.setActionCommand("jButton1");
    jButton1.addActionListener(livroTeste);

    jButton2.setActionCommand("jButton2");
    jButton2.addActionListener(livroTeste);

    jButton3.setActionCommand("jButton3");
    jButton3.addActionListener(livroTeste);

    jButton4.setActionCommand("jButton4");
    jButton4.addActionListener(livroTeste); 

    jLabel1.setText(jogador.getNome());
    jLabel5.setText(Integer.toString(jogador.getVida()));
    jLabel6.setText(Integer.toString(jogador.getAtaque()));
    jLabel7.setText(Integer.toString(jogador.getPericia()));
}

步骤3:在

LivroTeste.iniciarHistoria()
中,创建the的实例,如下所示:

T_Jogo

步骤4:现在,在

T_Jogo jogo = new T_Jogo(jogador, this);   
jogo.setVisible(true);
中,您会知道以下方式按下哪一个:
LivroTeste.actionPerformed()

,这有帮助。   


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.