簡體   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