繁体   English   中英

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

[英]Storing values from textfields in jframe class in a object in another class

一般来说,我对编程和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.");
    }

}

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

  1. 您可以更改static int skill1 = 1; public static int skill1 = 1; ,然后通过调用myCharacterStatsGUI.skill1处理该数据。
  2. 比firs选项更好,您可以将此int public int getSkill1 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; } } } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM