将jframe类中的文本字段中的值存储在另一个类中的对象中

时间:2018-11-17 14:01:59

标签: java swing

我一般对编程和Java还是陌生的。我目前是一名学生,我正尝试在课堂外做一个项目,以使自己更加精通Java。 目前,我正在研究基于文本的RPG,我试图在其中创建主要角色,为角色分配基本技能点并在整个游戏中使用该信息。 到目前为止,我已经制作了一个jframe类,其中用户具有6个基本值为1的不同技能。用户可以使用加号和减号按钮从特定技能中添加或减去一个值。 这就是我卡住的地方。我不知道如何将这些值保存到其他类可以使用的对象。 我会很感激我能得到的任何帮助。 谢谢。

public class CharacterStatsGUI extends javax.swing.JFrame {

static int skill1 = 1;
static int skill2 = 1;
static int skill3 = 1;
static int skill4 = 1;
static int skill5 = 1;
static int skill6 = 1;

static int skillPoints = 10;

private void txthealthActionPerformed(java.awt.event.ActionEvent evt) {                                          
    // TODO add your handling code here:
    txthealth.setText(String.valueOf(skill1));
}                                         

private void btnhpActionPerformed(java.awt.event.ActionEvent evt) {                                      
    // TODO add your handling code here:
    if(skillPoints >= 1){
    skill1++;
    skillPoints--;
    txthealth.setText(String.valueOf(skill1));
    txtpoints.setText(String.valueOf(skillPoints));
    }
    else{
        JOptionPane.showMessageDialog(null, "You dont have enough skills points");
    }


}                                     

private void btnhmActionPerformed(java.awt.event.ActionEvent evt) {                                      
    // TODO add your handling code here:
    if(skillPoints >= 0 && skill1 > 1){
    skill1--;
    skillPoints++;
    txthealth.setText(String.valueOf(skill1));
     txtpoints.setText(String.valueOf(skillPoints));
    }
    else{
        JOptionPane.showMessageDialog(null, "Minimum skill value is 1.");
    }

}

1 个答案:

答案 0 :(得分:0)

有多个解决此问题的方法。 并非所有这些方法都是有效的,也不是全部都是美丽的,但是如果“要使自己更加精通Java,那么最好了解各种方法!这是一些选择:

  1. 您可以用static int skill1 = 1;更改public static int skill1 = 1;,然后通过调用myCharacterStatsGUI.skill1来删除数据。
  2. 比firs选项更好,您可以将此int设置为private并创建一些公共方法,例如public int getSkill1public int getSkill(int numSkill)来返回正确技能的int值。
  3. 许多程序员建议GUI不应与数据相关,因此,您可以创建一个类MainCharacter,该类包含所有字符值和所包含的技能。此类必须实现选项2方法。
  4. 除了第三点,您还可以将MainCharacter类与其值分开,并将所有技能存储在内部类Skills中。当您想通过调用特定方法来获取这些值时。在下面的代码中,我想向您显示此选项:

    public Class MainChar{
        private Skills skills;
    
        public MainChar(){
            this.skills=new Skills();
        }
    
        /* Call it from your CharacterStatsGUI class, 
        in the method txthealthActionPerformed */
        public void augmentSkill(){ 
            skills.augment()
        }
    
        public int getHealt(){
            return skills.getHealt();
        }
    
        private class Skills{
            /*This example use only a skill, but
            you can extend it with others values*/
            private int health;
    
            public Skills(){
                health=1;
            }
    
            public void augment(){
                health++;
            }
    
            public int getHealt(){
                return health;
            }
        }
    }