如何显示变量';使用java swing的弹出对话框中的s值

如何显示变量';使用java swing的弹出对话框中的s值,java,swing,Java,Swing,我是编程的初学者。我在玩弄JavaSwing,试图制作一个愚蠢的应用程序。这是我的密码。它没有显示任何错误,但它不工作。当对话框弹出时,变量的值不会显示在对话框上。我使用的逻辑是正确的,因为当我在没有GUI的情况下在编译器中运行它时,它可以完美地工作。如果有人能说出我在这里做错了什么,那将非常有帮助 这是我的计算代码 import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.Ac

我是编程的初学者。我在玩弄JavaSwing,试图制作一个愚蠢的应用程序。这是我的密码。它没有显示任何错误,但它不工作。当对话框弹出时,变量的值不会显示在对话框上。我使用的逻辑是正确的,因为当我在没有GUI的情况下在编译器中运行它时,它可以完美地工作。如果有人能说出我在这里做错了什么,那将非常有帮助

这是我的计算代码

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class swingApp extends JFrame{
    JLabel label;
    JButton button;
    public JLabel label2;
    JTextField textField = new JTextField("enter you nicknamae");
    String username=textField.getText();
    public int geniusMeter;
    public int sum=0;
    public String sumAsString;
    public void swingAppLogic(String name){
        char[] letters = username.toCharArray();
        char [] alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        int [] measure={7,3,1,13,8,26,15,18,2,5,22,20,16,9,5,11,23,12,25,6,4,21,24,14,17,10};

        for(int count=0;count<letters.length;count++){
            for (int count1=0;count1<alphabet.length;count1++){
                if (letters[count]==alphabet[count1]){
                    geniusMeter=measure[count1];
                    sum=sum+geniusMeter;
                    break;
                }
            }
        }
        sumAsString = Integer.toString(sum);

    }

    public swingApp(){
        super("Genius Calculator");
        setLayout(new FlowLayout());
        label = new JLabel("Wanna know how genius you are?"); 
        label2 = new JLabel(" ");
        button = new JButton("press enter and then click me to know the results");
        handlerClass handler = new handlerClass();
        button.addActionListener(handler);
        add(label);
        add(label2);
        add(button);
        add(textField);
    }
    public class handlerClass implements ActionListener{
        public void actionPerformed(ActionEvent event){
            JOptionPane.showMessageDialog (null, sumAsString, "Title", JOptionPane.INFORMATION_MESSAGE);

        }
    }
}

您需要在按钮的
actionPerformed()
-方法中使用方法
swingAppLogic(字符串名称)

public class handlerClass implements ActionListener{
    public void actionPerformed(ActionEvent event){
      swingAppLogic(textField.getText());
        JOptionPane.showMessageDialog (null, sumAsString, "Title", JOptionPane.INFORMATION_MESSAGE);
    }
}
另一个问题是,每次跑步,你的总数都会越来越大。您需要在每次启动时将其重置为0:

public void swingAppLogic(String name){
    sum = 0;
    char[] letters = username.toCharArray();
如果您了解一些编码标准,它也会对您有所帮助。例如,类名应该以大写字母开头,以避免代码中出现混淆。当你有超过一个标签时,命名一个
JLabel标签
会让你很快感到困惑

PS:你计算genius总和的逻辑似乎总是输出相同的值150

[编辑]:


您正试图从用户输入的文本字段中获取名称。但是您在错误的时间执行此操作,而文本字段仍然包含“输入您的昵称”。因此,使用
name.tocharray()
而不是
username.tocharray()
。然后就不再需要变量
username

您不需要在任何地方调用swingAppLogic()方法来计算sumAsString的值。那么我可以做些什么来修复它?我应该在哪里调用该方法?解决方案在hamena314的答案中。谢谢!这似乎奏效了!但是你能解释一下我们在那里做了什么吗?我们带了一个全新的变量来接受用户输入吗?我知道了。我在方法中传递的参数中的变量是正确的。您为您的方法指定了参数,以便它可以使用它,因此您已经将其命名为
name
。这表明,您应该始终给出参数、变量等正确且“会说话”的名称,以便稍后可以看到变量/参数在做什么。示例:
JTextField textField
的更好名称可能是
昵称textField
,因此现在您在稍后阅读源代码时知道了其中的内容。我的答案正确吗?如果是,你能接受这个答案吗?或者您对您的问题还有其他问题吗?:)
public void swingAppLogic(String name){
    sum = 0;
    char[] letters = username.toCharArray();