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