Хранение значений из текстовых полей в классе jframe в объекте в другом классе - PullRequest
0 голосов
/ 17 ноября 2018

Я довольно новичок в программировании и 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 голосов
/ 17 ноября 2018

Существует более одного решения этой проблемы.Не все из них эффективны, не все красивы, но если это «сделать себя более опытным в Java, полезно знать различные способы! Вот несколько вариантов:

  1. Вы можете изменитьstatic int skill1 = 1; с public static int skill1 = 1; и добавьте эти данные, вызвав myCharacterStatsGUI.skill1.
  2. Лучше, чем первый параметр, вы можете сделать это int private и создать несколько открытых методов, таких как public int getSkill1 или public int getSkill(int numSkill), который возвращает значение int правильного навыка.
  3. Многие программисты считают, что графический интерфейс не должен быть связан с данными, и поэтому вы можете создать класс 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;
            }
        }
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...